python中的三個讀read(),readline()和readlines()
阿新 • • 發佈:2019-01-11
我們談到“文字處理”時,我們通常是指處理的內容。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)) #儲存入結果檔案