青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sivan's blog

用代碼說話……
posts - 14, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

[學]Python用戶手冊筆記_4_Input and Output

Posted on 2010-12-25 16:33 Sivan 閱讀(425) 評論(0)  編輯 收藏 引用 所屬分類: Python

6. 輸入輸出

6.1 設計輸出格式

輸出值的方法:表達式語句、print語句和write()方法。

想要對輸入字符串格式做一些復雜的控制,有兩種方法。第一,控制整個字符串,使用字符切割和聯接操作創建任意輸出形式。第二,使用%操作符和字符串作為左參數。%操作符將左參數解釋為類似于sprintf()風格的格式字符串,并作用于右參數,從操作中返回格式化的字符串。

Python中可以使用repr()或str()函數,將值轉為字符串。反引號('')等價于repr()。這些函數在未來的Python版本中將會被去掉。

函數str()用于將值轉化為適于人閱讀的形式,而repr()轉化為共解釋器讀取的形式(如果沒有等價的語法,則會發生SyntaxError異常)。某對象沒有適于人閱讀的解釋形式時,str()會返回與repr()等同的值。數值、鏈表、字典對各函數有統一的解讀方式。字符串和浮點數,有獨特的解讀方式。

示例:

>>> s= 'Hello World!'
>>> str(s)
'Hello World!'
>>> repr(s)
"'Hello World!'"
>>> str(0.1)
'0.1'
>>> repr(0.1)
'0.10000000000000001'
>>> hello = 'hello world\n'
>>> print hello
hello world
>>> print repr(hello)
'hello world\n'
>>> print str(hello)
hello world
>>> x = 10*3.25
>>> y = 200*200
>>> 'x, y, (`spam`,`eggs`)'
'x, y, (`spam`,`eggs`)'
>>> 
一個輸出平方和立方的例子:
>>> for x in range(1, 11):
...  print repr(x).rjust(2), repr(x*x).rjust(3),
...  print repr(x*x*x).rjust(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
>>> 

print方法總會在兩個參數之間增加一個空格。rjust()函數參數為輸出所占的位數,輸出方式為右對齊。類似的函數有ljust()和center()。這些函數只是輸出新的字符串,并不改變它們,如果輸出的字符串太長,也不會被截斷,而是原樣輸出。如果要截斷字符串,可以使用切割操作,如,x.ljust(n)[:n]。

zfill()用于向數值的字符串表達左側填充0。該函數可以正確理解正負號。

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

%操作符使用方法

>>> import math 
>>> print 'The value of PI is approximately %5.3f.' % math.pi 
The value of PI is approximately 3.142. 
>>>  
如果有超過一個的字符串要格式化為一體,就需要將它們傳入一個元組做為右值:
>>> table = {'A':001, 'B':002, 'C':003} 
>>> for name, phone in table.items(): 
...  print '%-10s ==> %10d' % (name, phone) 
...  
A          ==>          1 
C          ==>          3 
B          ==>          2 
>>>  
大多數類C的格式化操作都需要傳入適當的類型。使用%s格式會更輕松一些:如果對應的參數不是字符串,它會通過內置的str()函數轉化為字符串。Python支持用*作為一個隔離參數來傳遞寬度或精度。Python不支持C的%n和%p操作符。

變量格式化通過名字而不是位置,這樣可以產生符合真實長度的格式化字符串,而不用分隔。這一效果可以通過使用form % (name) format結構來實現:

>>> table = {'A':001, 'B':002, 'C':003} 
>>> print 'A:%(A)d; B:%(B)d; C:%(C)d' % table 
A:1; B:2; C:3 
>>>  
這個技巧在新的內置函數vars()組合使用時非常有用,該函數返回一個包含所有局部變量的字典。

6.2 讀寫文件

open()返回一個文件,通過的用法需要兩個參數:open(filename, mode)

>>> f = open('C:/Users/cym/Desktop/1.txt', 'w') 
>>> print f 
<open file 'C:/Users/cym/Desktop/1.txt', mode 'w' at 0x03D07548> 
>>>  
mode有:

r,此選項使文件只讀,默認模式;

w,此選項使文件只寫,對于已經存在的同名文件,該操作覆蓋源文件;

a,此選項以追加方式打開文件;

r+,此選項以讀寫方式打開文件。

在Windows和Moc平臺,b模式以二進制方式打開文件,所以會有rb,wb,r+b等等組合。Windows平臺上文本文件與二進制文件是有區別的,讀寫文本文件時,行尾會自動添加行結束符。這種后臺操作方式對ASCII文本文件沒有什么問題,但是操作JPEG或EXE這樣的二進制文件就會產生破壞。在操作這些文件時一定要記得以二進制模式打開。

6.2.1 文件對象方法

讀文件,f.read(size)。該方法讀取若干數量的數據并以字符串形式返回其內容,字符串長度為數值size所指定的大小。如果沒有指定size或者指定為負數,就會讀取并返回整個文件。當文件大小為當前機器內存兩倍時,就會產生問題。正常情況下,會盡可能按比較大的size讀取和返回數據。如果到了文件末尾,f.read()會返回一個空字符串。

>>> f = open('C:/Users/cym/Desktop/1.txt', 'r') 
>>> f.read() 
'' 
>>>  
f.readline()從文件中讀取單獨一行,字符串結尾會自動加上一個換行符,只有當文件最后一行沒有以換行符結尾時,這一操作才會被忽略。如果f.readline()返回一個空字符串,那就表示到達了文件末尾,如果是一個空行,就會描述為\n,一個只包含換行符的字符串。

f.readlines([size])返回一個列表,包含了文件中所有的數據行。如果給定了size參數,就會讀入多于一行的比特數,從中返回多行文本。這個功能通常用于高效讀取大型行文本,避免了將整個文件讀入內存。這種操作只返回完整的行。

一種另外的方法是循環讀取文件。這是一種內存效率高,速度快,代碼簡單的方法:

>>> for line in f: 
...  print line, 
...  
交換通道很簡單,但是不提供完整的控制。因為兩個通道管理線緩沖不同,它們不能混合。

如果需要寫入字符串以外的數據,就要先把這些數據轉換為字符串。

>>> f = open('C:\\Users\\cym\\Desktop\\test.txt','r+') 
>>> value = ('the answer', 42) 
>>> s = str(value) 
>>> f.write(s) 
>>> f.close() 
>>>  
f.tell()返回一個整數,代表文件對象在文件中的指針位置,該數值計量了自文件開頭到指針處的比特數。需要改變文件對象指針的話,使用f.seek(offset, from_what)。指針在該操作中從指定的引用位置移動offset比特,引用位置由from_what參數指定。from_what值為0表示自文件起處開始,1表示自當前文件指針位置開始,2表示自文件末尾開始。from_what可以忽略,其默認值為0,此時從文件頭開始。

文件使用完后,調用f.close()可以關閉文件,釋放打開文件后占用的系統資源。調用f.close()之后,再調用文件對象會自動引發錯誤。

文件對象還有一些不太常用的附加方法,比如isatty()和truncate()。

6.2.2 pickle模塊

我們可以很容易的讀寫文件中的字符串。數值就要多費點周折,因為read()方法只會返回字符串,應該將其傳入int()方法中,就可以將'123'這樣的字符串轉為對應的數值123。不過,當你需要保存更為復雜的數據類型,例如鏈表、字典,類的實例,事情就會變的更復雜了。Python提供了一個名為pickle的標準模塊。這是一個令人贊嘆的模塊,幾乎可以把任何Python對象表達為字符串,這一過程稱之為封裝。從字符串表達出重新構造對象之為拆封unpickling。封裝狀態中的對象可以存儲在文件或對象中,也以通過網絡在遠程的機器之間傳輸。

如果你有一個對象x,一個以寫模式打開的文件對象f,封裝對象的最簡單的方法只需要一行代碼:

pickle.dump(x,f)

如果f是一個以讀模式打開的文件對象,就可以重裝拆封這個對象:

x=pickle.load(f)

pickle是存儲Python對象以供其它程序或其本身以后調用的標準方法。提供這一組技術的一個持久化對象。因為pickle的用途很廣泛,很多Python擴展的作者都非常注意類似矩陣這樣的新數據類型是否適合封裝和拆封。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美亚洲视频| 久久最新视频| 久久在线免费观看视频| 亚洲一区bb| 亚洲精品一区二区三区在线观看| 亚洲人成在线免费观看| 国产一区二区三区视频在线观看| 美女久久一区| 蜜臀99久久精品久久久久久软件| 中文国产成人精品| 亚洲无亚洲人成网站77777| 在线视频中文亚洲| 一区二区高清| 亚洲夜晚福利在线观看| 亚洲天堂久久| 日韩亚洲欧美精品| 亚洲黄色尤物视频| 99re6热在线精品视频播放速度| 国产精品白丝黑袜喷水久久久| 久久福利视频导航| 久久综合九色综合网站| 蜜臀久久99精品久久久画质超高清| 亚洲视频你懂的| 午夜宅男欧美| 老司机成人在线视频| 免费亚洲电影在线| 欧美日韩喷水| 国产欧美成人| 在线观看日韩精品| 亚洲毛片一区| 亚洲香蕉成视频在线观看| 午夜精品福利视频| 久色成人在线| 1769国内精品视频在线播放| 欧美人与性动交a欧美精品| 欧美影院精品一区| 蜜臀久久99精品久久久画质超高清| 久久国产色av| 欧美激情综合五月色丁香| 久久综合图片| 欧美久久久久免费| 国产欧美精品在线播放| 国产精品视频福利| 亚洲电影专区| 午夜视频在线观看一区二区三区| 亚洲永久视频| 欧美国产日韩a欧美在线观看| 另类尿喷潮videofree | 欧美日韩精品一区视频| 理论片一区二区在线| 欧美三级电影一区| 在线观看日韩一区| 欧美在线中文字幕| 亚洲精品一二| 久久婷婷av| 国产欧美日韩精品a在线观看| 国产精品网站视频| 亚洲美女啪啪| 欧美日韩一区高清| 国产日韩1区| 99这里有精品| 免费亚洲婷婷| 午夜宅男久久久| 国产精品hd| 一本色道久久综合亚洲精品按摩| 一区二区激情| 亚洲电影在线观看| 亚洲欧美文学| 国产精品久久久久久久9999 | 激情小说亚洲一区| 亚久久调教视频| 在线视频日韩精品| 欧美日韩八区| 亚洲日本va午夜在线影院| 久久精品亚洲一区| 美女图片一区二区| 欧美在线观看视频在线| 免费久久精品视频| 亚洲成人自拍视频| 另类尿喷潮videofree| 欧美在线免费播放| 国产午夜精品久久久久久久| 亚洲一区国产精品| 在线视频日本亚洲性| 欧美日韩亚洲系列| 亚洲图片欧洲图片av| 裸体一区二区三区| 欧美激情自拍| 91久久精品国产91久久性色tv| 在线亚洲欧美专区二区| 亚洲国产一区二区三区青草影视| 亚洲视频一区| 国产精品视频男人的天堂| 亚洲一区二区毛片| 男女激情久久| 久久亚洲精品中文字幕冲田杏梨| 欧美日韩国产综合视频在线观看| 国模私拍一区二区三区| 在线亚洲精品| 亚洲一二三区精品| 久久综合999| 亚洲精品社区| 麻豆精品视频在线观看视频| 久久综合五月| 国产伦精品一区二区三| 欧美在线|欧美| 乱中年女人伦av一区二区| 亚洲区第一页| 国产精品99久久久久久久女警| 免费不卡在线观看| 亚洲美女毛片| 亚洲国产电影| 欧美日韩国产综合视频在线观看中文| 伊大人香蕉综合8在线视| 午夜久久影院| 美国三级日本三级久久99| 亚洲欧洲精品一区二区三区| 亚洲欧洲综合另类| 久久免费国产精品| 日韩亚洲欧美一区二区三区| 欧美成人免费在线观看| 欧美精品一区在线播放| 亚洲日韩欧美一区二区在线| 一区二区三区国产在线| 在线观看欧美| 欧美成人xxx| 国产精品久久久久久久久借妻| 亚洲精品在线视频| 欧美成人免费小视频| 久久躁日日躁aaaaxxxx| 日韩一区二区免费看| 欧美一区网站| 亚洲七七久久综合桃花剧情介绍| 久久亚洲精选| 久久久水蜜桃av免费网站| 亚洲图片欧美日产| 美女精品一区| 久久gogo国模裸体人体| 欧美成人综合| 狂野欧美激情性xxxx| 国产精品啊v在线| 欧美成人黑人xx视频免费观看| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧美日韩精品久久亚洲区 | 欧美自拍丝袜亚洲| 亚洲午夜av在线| 国产精品青草综合久久久久99 | 久久精品国产一区二区三区 | 久久综合九色综合网站| 国产精品高潮在线| 亚洲高清免费在线| 激情国产一区| 欧美一级视频免费在线观看| 国产一区二区精品丝袜| 亚洲欧美日韩国产中文在线| 一本久久a久久免费精品不卡| 亚洲美女诱惑| 亚洲国产专区| 久久理论片午夜琪琪电影网| 亚洲国产成人av好男人在线观看| 亚洲精品小视频在线观看| 亚洲人成网站777色婷婷| 久久久久久久久久久成人| 久久不射网站| 国产久一道中文一区| 亚洲一级在线| 亚洲一区二区成人| 久久久精品免费视频| 一本色道久久精品| 欧美va亚洲va国产综合| 欧美黄污视频| 亚洲日韩中文字幕在线播放| 欧美xx69| 亚洲精品久久久久久久久久久久久 | 黄网站色欧美视频| 免费视频久久| 老司机免费视频一区二区三区| 在线视频精品一| 亚洲日本欧美天堂| 国产精品va在线| 欧美激情在线观看| 欧美成人一区在线| 免费成人在线观看视频| 久久久亚洲人| 久久久久国产免费免费| 久久久av水蜜桃| 久久精品视频网| 久久亚洲综合色| 欧美成人免费网| 美女在线一区二区| 免费在线看一区| 欧美日韩三级一区二区| 久久亚洲综合网| 久久亚洲私人国产精品va| 亚洲欧美日韩精品久久奇米色影视 | 久久九九久精品国产免费直播| 久久野战av| 欧美欧美午夜aⅴ在线观看| 欧美日韩亚洲一区二区三区在线观看| 欧美日韩视频在线观看一区二区三区 |