本文實例總結了Python讀寫文件方法。分享給大家供大家參考。具體分析如下:
1.open
使用open打開文件后一定要記得調用文件對象的close()方法。比如可以用try/finally語句來確保最后能關閉文件。
file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )
注:不能把open語句放在try塊里,因為當打開文件出現異常時,文件對象file_object無法執行close()方法。
2.讀文件
讀文本文件
input = open('data', 'r')#第二個參數默認為rinput = open('data')
讀二進制文件
代碼如下:input = open('data', 'rb')
讀取所有內容
file_object = open('thefile.txt')try: all_the_text = file_object.read( )finally: file_object.close( )
讀固定字節
file_object = open('abinfile', 'rb')try: while True: chunk = file_object.read(100) if not chunk: break do_something_with(chunk)finally: file_object.close( )
讀每行
代碼如下:list_of_all_the_lines = file_object.readlines( )
如果文件是文本文件,還可以直接遍歷文件對象獲取每行:
for line in file_object: process line
3.寫文件
寫文本文件
代碼如下:output = open('data', 'w')
寫二進制文件
代碼如下:output = open('data', 'wb')
追加寫文件
代碼如下:output = open('data', 'w+')
寫數據
file_object = open('thefile.txt', 'w')file_object.write(all_the_text)file_object.close()
寫入多行
代碼如下:file_object.writelines(list_of_text_strings)
注意,調用writelines寫入多行在性能上會比使用write一次性寫入要高。
在處理日志文件的時候,常常會遇到這樣的情況:日志文件巨大,不可能一次性把整個文件讀入到內存中進行處理,例如需要在一臺物理內存為 2GB 的機器上處理一個 2GB 的日志文件,我們可能希望每次只處理其中 200MB 的內容。
在 Python 中,內置的 File 對象直接提供了一個 readlines(sizehint) 函數來完成這樣的事情。以下面的代碼為例:
file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: position = file.tell() lines = file.readlines(sizehint)
每次調用 readlines(sizehint) 函數,會返回大約 200MB 的數據,而且所返回的必然都是完整的行數據,大多數情況下,返回的數據的字節數會稍微比 sizehint 指定的值大一點(除最后一次調用 readlines(sizehint) 函數的時候)。通常情況下,Python 會自動將用戶指定的 sizehint 的值調整成內部緩存大小的整數倍。
新聞熱點
疑難解答