亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python入門(mén)第7/10頁(yè)

 更新時(shí)間:2007年02月08日 00:00:00   作者:  

第七章 輸入輸出
有幾種辦法可以從程序輸出;數(shù)據(jù)可以用可讀的形式顯示,或保存到文件中以備日后使用。本章討論一些輸入輸出的辦法。

7.1 輸出格式控制
到現(xiàn)在為止我們已經(jīng)看到了兩種輸出值的方法:表達(dá)式語(yǔ)句和print語(yǔ)句。(第三種方法是使用文件對(duì)象的write()方法,標(biāo)準(zhǔn)輸出文件可以用sys.stdout引用。參見(jiàn)庫(kù)參考手冊(cè))。

我們常常需要控制輸出格式,而不僅僅是顯示空格分開(kāi)的值。有兩種辦法控制輸出格式:一種辦法是自己進(jìn)行字符串處理,用字符串的片斷和合并操作可以產(chǎn)生任何可以想象的格式。標(biāo)準(zhǔn)模塊string包含了諸如把字符串填充到指定的列寬這樣的有用操作,后面會(huì)有提及。

另一種辦法是使用%運(yùn)算符,此運(yùn)算符以一個(gè)字符串為左運(yùn)算元,它按C的sprintf()函數(shù)格式把右運(yùn)算元轉(zhuǎn)換為字符串,返回轉(zhuǎn)換結(jié)果。

 問(wèn)題是:如何把值轉(zhuǎn)換為字符串? 

幸運(yùn)的是,Python有一種辦法可以把任何值轉(zhuǎn)換為字符串:使用repr()函數(shù),或把值寫(xiě)在兩個(gè)反向引號(hào)(``)之間。例如:

>>> x = 10 * 3.14
>>> y = 200*200
>>> s = 'The value of x is ' + `x` + ', and y is ' + `y` + '...'
>>> print s
The value of x is 31.4, and y is 40000...
>>> # 反向引號(hào)也適用于非數(shù)值型
... p = [x, y]
>>> ps = repr(p)
>>> ps
'[31.4, 40000]'
>>> # 轉(zhuǎn)換字符串對(duì)字符串加字符串引號(hào)和反斜杠
... hello = 'hello, world\n'
>>> hellos = `hello`
>>> print hellos
'hello, world\012'
>>> # 反向引號(hào)內(nèi)可以是一個(gè)序表
... `x, y, ('spam', 'eggs')`
"(31.4, 40000, ('spam', 'eggs'))"


下面是兩種寫(xiě)出平方、立方表的方法:

>>> import string
>>> for x in range(1, 11):
...     print string.rjust(`x`, 2), string.rjust(`x*x`, 3),
...     # 前一行的結(jié)尾逗號(hào)表示不換行
...     print string.rjust(`x*x*x`, 4)
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000
>>> for x in range(1,11):
...     print'%2d %3d %4d' % (x, x*x, x*x*x)
... 
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000


注意print輸出的各項(xiàng)之間額外加了一個(gè)空格,這是print的規(guī)定?!?nbsp;

此例顯示了函數(shù)string.rjust()的用法,此函數(shù)可以把一個(gè)字符串放進(jìn)指定寬度右對(duì)齊,左邊用空格填充。類(lèi)似函數(shù)還有string.ljust()和string.center()。這些函數(shù)不向外輸出,只是返回轉(zhuǎn)換后的字符串。如果輸入字符串太長(zhǎng)也不會(huì)被截?cái)喽潜辉瓨臃祷?。這樣的處理可能會(huì)使你的列對(duì)齊失效,但這可能比截?cái)嘁靡恍?,截?cái)嗟慕Y(jié)果是我們看到一個(gè)錯(cuò)誤的值。(如果你確實(shí)需要截?cái)嗟脑捒偪梢栽偌右粚悠瑪?,如string.ljust(x,n)[0:n])。

 還有一個(gè)函數(shù)string.zfill(),可以在數(shù)值左邊填零。此函數(shù)可以處理帶有加減號(hào)的情況: 

>>> string.zfill('12', 5)
'00012'
>>> string.zfill('-3.14', 7)
'-003.14'
>>> string.zfill('3.14159265359', 5)
'3.14159265359'


%操作符的用法如下例:

>>> import math
>>> print 'The value of PI is approximately %5.3f.' % math.pi
The value of PI is approximately 3.142.


如果有多個(gè)值可以用一個(gè)序表給出,這時(shí)格式字符串中要有多個(gè)格式,如:

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> for name, phone in table.items():
...     print'%-10s ==> %10d' % (name, phone)
... 
Jack       ==>       4098
Dcab       ==>    8637678
Sjoerd     ==>       4127


大多數(shù)格式與C用法相同,要求要輸出的值的類(lèi)型符合格式的需要。但是,如果你沒(méi)有引發(fā)例外錯(cuò)誤的話也不會(huì)產(chǎn)生內(nèi)核堆列。Python的%s格式要寬得多:如果相應(yīng)的輸出項(xiàng)不是字符串對(duì)象,就先用str()內(nèi)置函數(shù)把它變成字符串。在格式指定中寬度指定為*號(hào)表示后面的輸出項(xiàng)中多出一個(gè)指定寬度的整數(shù)。C格式%n和%p未被支持。

如果你有一個(gè)長(zhǎng)格式串不想把它分開(kāi),可以在指定格式的地方指定名字,這樣就不需要按次序去把格式和名字對(duì)應(yīng)起來(lái),這種格式為“%(變量名)格式”,例如:

>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
>>> print 'Jack: %(Jack)d; Sjoerd: %(Sjoerd)d; Dcab: %(Dcab)d' % table
Jack: 4098; Sjoerd: 4127; Dcab: 8637678


這里輸出項(xiàng)總是一個(gè)字典,字典的各項(xiàng)值是要輸出的值,字典的鍵值是各值的名字。這種輸出格式經(jīng)常與內(nèi)置函數(shù)var()配合使用,var()返回包含所有局部變量的字典。

7.2 讀寫(xiě)文件
  open()打開(kāi)一個(gè)文件對(duì)象,經(jīng)常使用兩個(gè)參數(shù):“open(文件名,模式)”。例如: 

>>> f=open('/tmp/workfile', 'w')
>>> print f
<open file '/tmp/workfile', mode 'w' at 80a0960>


第一自變量是一個(gè)包含了文件名的字符串,第二自變量是文件打開(kāi)方式的字符串。模式‘r '表示讀取,‘w'表示只寫(xiě)(已有的同名文件被清除),‘a(chǎn)'表示打開(kāi)文件在尾部添加, ‘r+'表示打開(kāi)文件既可以讀也可以寫(xiě)。打開(kāi)方式參數(shù)可選,缺省為‘r'模式。

在Windows和Macintosh中在模式中加入‘b'表示以二進(jìn)制格式打開(kāi)文件,如‘rb'、‘wb '、‘r+b'。Windows對(duì)文本文件和二進(jìn)制文件有不同的處理,文本文件中的換行字符在讀寫(xiě)時(shí)有變化。這種對(duì)文件數(shù)據(jù)的幕后的修改不影響ASCII文本文件,但是會(huì)破壞二進(jìn)制數(shù)據(jù)如JPEG 或“.EXE”文件的數(shù)據(jù)。讀寫(xiě)這樣的文件一定要使用二進(jìn)制格式。(Macintosh中文本模式的精確描述依賴(lài)于使用的C庫(kù))。

7.2.1 文件對(duì)象的方法
 本節(jié)后面的例子假設(shè)已經(jīng)建立了一個(gè)名為f的文件對(duì)象。 

為了讀取文件內(nèi)容,調(diào)用f.read(size),可以讀入一定字節(jié)數(shù)的數(shù)據(jù)返回為一個(gè)字符串。size 是一個(gè)可選數(shù)值參數(shù),省略size或size取負(fù)值時(shí)讀入整個(gè)文件并返回為一個(gè)字符串;如果文件比你的機(jī)器內(nèi)存大一倍,那是你的問(wèn)題。指定了正的size的時(shí)候之多讀入并返回size字節(jié)。如果讀到了文件尾,f.read()返回一個(gè)空串("")。如:

 
>>> f.read()
'This is the entire file.\012'
>>> f.read()
''
 


f.readline()從文件中讀入一行,返回的字符串中將包括結(jié)尾的一個(gè)換行符(\n),如果文件的最后一行沒(méi)有換行符則由該行讀入的字符串也沒(méi)有結(jié)尾的換行符。這樣,由readline() 返回的結(jié)果不會(huì)有歧義,讀入結(jié)果為空串時(shí)一定是到了文件尾,讀入一個(gè)'\n'時(shí)為空行。

>>> f.readline()
'This is the first line of the file.\012'
>>> f.readline()
'Second line of the file\012'
>>> f.readline()
''


f.readlines()反復(fù)調(diào)用f.readline(),返回一個(gè)包含文件所有行的列表。

>>> f.readlines()
['This is the first line of the file.\012', 'Second line of the file\012']


f.write(string)把string的內(nèi)容寫(xiě)入到文件中,返回None。
 
>>> f.write('This is a test\n')
 


f.tell()返回文件對(duì)象的當(dāng)前讀寫(xiě)為止,按從文件開(kāi)始的字節(jié)數(shù)算。為了改變讀寫(xiě)位置,使用“f.seek(位移,從哪里)”。讀寫(xiě)位置按一個(gè)參考點(diǎn)加上位移來(lái)計(jì)算,參考點(diǎn)用“從那里”參數(shù)指定,取0時(shí)從文件頭開(kāi)始算,取1時(shí)按當(dāng)前位置算,取2時(shí)從文件尾算。缺省值是0 ,從文件開(kāi)始算。

>>> f=open('/tmp/workfile', 'r+')
>>> f.write('0123456789abcdef')
>>> f.seek(5)     # 從文件頭前進(jìn)5個(gè)字節(jié),到達(dá)第6個(gè)字符
>>> f.read(1)        
'5'
>>> f.seek(-3, 2) # 轉(zhuǎn)到結(jié)尾前3個(gè)字符
>>> f.read(1)
'd'


用外一個(gè)文件后調(diào)用f.close()關(guān)閉文件,釋放打開(kāi)文件所占用的系統(tǒng)資源。文件關(guān)閉后再使用此文件對(duì)象就無(wú)效了。

>>> f.close()
>>> f.read()
Traceback (innermost last):
  File "<stdin>", line 1, in ?
ValueError: I/O operation on closed file


文件對(duì)象還有其它一些不太常用的方法,例如isatty()和truncate(),參見(jiàn)庫(kù)參考手冊(cè)?!?nbsp;

7.2.2 pickle模塊
字符串可以很容易地從文件讀入或向文件寫(xiě)出。讀入數(shù)值要麻煩一些,因?yàn)閞ead()方法總是返回字符串,要把讀入的字符串傳給象string.atoi()這樣的函數(shù),把象‘123'這樣的字符串轉(zhuǎn)換為對(duì)應(yīng)的整數(shù)值123。但是,當(dāng)你想保存更復(fù)雜的數(shù)據(jù)類(lèi)型如列表、字典或類(lèi)實(shí)例時(shí),讀寫(xiě)就要復(fù)雜得多。

Python的設(shè)計(jì)使程序員可以不必反復(fù)編寫(xiě)調(diào)試保存復(fù)雜數(shù)據(jù)類(lèi)型的代碼,它提供了一個(gè)叫做pickle的標(biāo)準(zhǔn)模塊。這個(gè)令人驚異的模塊可以把幾乎任何Python對(duì)象轉(zhuǎn)換為字符串表示,這個(gè)過(guò)程叫做腌制,從對(duì)象的字符串表示恢復(fù)對(duì)象叫做恢復(fù)。在腌制和反腌制之間,對(duì)象的字符串表示可以保存在文件或數(shù)據(jù)中,甚至于通過(guò)網(wǎng)絡(luò)連接傳送到遠(yuǎn)程計(jì)算機(jī)上。

 如果你有一個(gè)對(duì)象x,有一個(gè)可寫(xiě)的文件對(duì)象f,最簡(jiǎn)單的腌制對(duì)象的辦法是下面一行代碼: 

pickle.dump(x, f)

為了恢復(fù)對(duì)象,如果剛才的文件已打開(kāi)用于讀取,文件對(duì)象名仍為f,則:

x = pickle.load(f)

(腌制和恢復(fù)還有其它用法,可以腌制多個(gè)對(duì)象,可以不把數(shù)據(jù)寫(xiě)入文件,詳見(jiàn)庫(kù)參考手冊(cè))。 

pickle是保存Python對(duì)象并被其它程序或同一程序以后再運(yùn)行時(shí)調(diào)用的標(biāo)準(zhǔn)辦法,這種做法的專(zhuān)用術(shù)語(yǔ)叫做“持久對(duì)象”。因?yàn)閜ickle使用廣泛,許多Python擴(kuò)展模塊的作者都留意使新增加的數(shù)據(jù)類(lèi)型如矩陣可以正確地腌制和恢復(fù)。

相關(guān)文章

  • Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__)

    Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__)

    本文主要介紹了Python 中下劃線的幾種用法(_、_xx、xx_、__xx、__xx__),詳細(xì)的介紹了這幾種下劃線的用處,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • 解決Python3中二叉樹(shù)前序遍歷的迭代問(wèn)題

    解決Python3中二叉樹(shù)前序遍歷的迭代問(wèn)題

    二叉樹(shù)是分層數(shù)據(jù)結(jié)構(gòu),其中每個(gè)父節(jié)點(diǎn)最多有 2 個(gè)子節(jié)點(diǎn),在今天的文章中,我們將討論一個(gè)在大量技術(shù)編碼面試中出現(xiàn)的重要主題,對(duì)Python二叉樹(shù)遍歷相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-09-09
  • Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼

    Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python 提取dict轉(zhuǎn)換為xml/json/table并輸出的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-08-08
  • python使用pypdf2實(shí)現(xiàn)pdf文檔解密

    python使用pypdf2實(shí)現(xiàn)pdf文檔解密

    利用pypdf2完成pdf的解密,這里的事例是python3環(huán)境下的,當(dāng)然python2下也可以運(yùn)行,只需要修改名稱(chēng)即可,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Python selenium+cookie實(shí)現(xiàn)免密登陸的示例代碼

    Python selenium+cookie實(shí)現(xiàn)免密登陸的示例代碼

    本文主要介紹了Python selenium+cookie實(shí)現(xiàn)免密登陸的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python異常處理和日志處理方式

    python異常處理和日志處理方式

    今天小編就為大家分享一篇python異常處理和日志處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python及Pycharm安裝方法圖文教程

    Python及Pycharm安裝方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Python及Pycharm安裝方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Tensorflow實(shí)現(xiàn)多GPU并行方式

    Tensorflow實(shí)現(xiàn)多GPU并行方式

    今天小編就為大家分享一篇Tensorflow實(shí)現(xiàn)多GPU并行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 用python3教你任意Html主內(nèi)容提取功能

    用python3教你任意Html主內(nèi)容提取功能

    這篇文章主要介紹了用python3教你任意Html主內(nèi)容提取功能,主要使用到了requests、lxml、json等模塊,文中逐一對(duì)這幾個(gè)模塊做了介紹,需要的朋友可以參考下
    2018-11-11
  • 常用的Python代碼調(diào)試工具總結(jié)

    常用的Python代碼調(diào)試工具總結(jié)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python代碼調(diào)試工具展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論