1. 程式人生 > >python中的三個讀read(),readline()和readlines()

python中的三個讀read(),readline()和readlines()

我們談到“文字處理”時,我們通常是指處理的內容。Python 將文字檔案的內容讀入可以操作的字串變數非常容易。檔案物件提供了三個“讀”方法: .read()、.readline() 和 .readlines()。每種方法可以接受一個變數以限制每次讀取的資料量,但它們通常不使用變數。 .read() 每次讀取整個檔案,它通常用於將檔案內容放到一個字串變數中。然而 .read() 生成檔案內容最直接的字串表示,但對於連續的面向行的處理,它卻是不必要的,並且如果檔案大於可用記憶體,則不可能實現這種處理。

.readline() 和 .readlines() 非常相似。它們都在類似於以下的結構中使用:

Python .readlines() 示例

        fh = open( 'c:\\autoexec.bat')         for line in fh.readlines():                     print   line.readline() 和 .readlines()之間的差異是後者一次讀取整個檔案,象 .read()一樣。.readlines()自動將檔案內容分析成一個行的列表,該列表可以由 Python 的 for... in ... 結構進行處理。另一方面,.readline()每次只讀取一行,通常比 .readlines()慢得多。僅當沒有足夠記憶體可以一次讀取整個檔案時,才應該使用.readline()。  

寫:

writeline()是輸出後換行,下次寫會在下一行寫。write()是輸出後游標在行末不會換行,下次寫會接著這行寫


通過readline輸出,對於比較大的檔案,這種佔用記憶體比較小。
#coding:utf-8

f = open('poem.txt','r')
result = list()
for line in open('poem.txt'):
    line = f.readline()
    print line
    result.append(line)
print result
f.close()                
open('result-readline.txt', 'w').write('%s' % '\n'.join(result))
#coding:utf-8
'''cdays-4-exercise-6.py 檔案基本操作
    @note: 檔案讀取寫入, 列表排序, 字串操作
    @see: 字串各方法可參考hekp(str)或Python線上文件http://docs.python.org/lib/string-methods.html
'''

f = open('cdays-4-test.txt', 'r')                   #以讀方式開啟檔案
result = list()
for line in f.readlines():                          #依次讀取每行
    line = line.strip()                             #去掉每行頭尾空白
    if not len(line) or line.startswith('#'):       #判斷是否是空行或註釋行
        continue                                    #是的話,跳過不處理
    result.append(line)                             #儲存
result.sort()                                       #排序結果
print result
open('cdays-4-result.txt', 'w').write('%s' % '\n'.join(result)) #儲存入結果檔案