您好,登錄后才能下訂單哦!
本篇內容介紹了“python進行文件操作的方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
如何關閉文件
當文件操作結束時,我們最好主動關閉文件。盡管Python有垃圾回收(garbage collector)機制,去清理不用的對象,但是最好還是自己關閉文件。
最簡單的方法就是:
f = open("app.log", 'r') do_something() f.close()
但是這個辦法不安全,因為在進行其他操作時,可能會出現異常,程序退出,那么關閉文件的語句就不會被執行。
因此,可以用<try-finally>語句來處理:
try: f = open('app.log', 'r') do_something() finally: f.close()
無論是否發生異常,關閉文件的指令都會被執行。
但是python官方給出的最佳用法是:
with open('app.log', 'r') as f:
do_something()
使用這種用法,我們不必調用close()方法,在with語句程序內部就會執行,無論內部是否出現異常。with語句被稱為上下文管理器,我們可以暫且不管這個的原理,只需要知道使用with語句,關閉文件的操作會被自動執行,這也是官方推薦的最佳用法,比用<try-finally>語句寫起來簡單。
文件操作
寫入文件
主要介紹兩個方法:
1.write()方法
這個方法的參數是一個單獨的字符串,比如:
lines = ['line1', 'line2'] with open('filename.txt', 'w') as f: s = '' for data in lines: s += data s += '\n' f.write(s)
其實更好的寫法是使用join函數:
lines = ['line1', 'line2'] with open('filename.txt', 'w') as f: f.write('\n'.join(lines))
2.writelines()方法
參數是一組可迭代的字符串,比如
lines = ['line1', 'line2'] with open('filename.txt', 'w') as f: new_lines = [] for data in lines: new_lines.append(data+'\n') f.writelines(new_lines)
其實更加優雅的寫法,可以使用生成器:
lines = ['line1', 'line2'] with open('filename.txt', 'w') as f: f.writelines("%s\n" % l for l in lines)
讀取文件
這里介紹四種用法,后面都默認文件已經被打開了:
1.read()
result = f.read()
這里返回的是文件內容,是str類型的結果,這個方法還帶一個數值類型的參數,指定讀取多少內容,如果省略了或者是負數,那么就返回文件的全部內容。
2.readline()
result = f.readline()
返回的也是字符串,不過是一行內容,繼續調用,就會返回下一行內容
3.readlines()
result = f.readlines()
這里返回的是一個列表,但是當數據較大時,這樣的用法會很占用內存,不推薦在數據量大時使用
4.直接循環文件對象
for line in f: print line do_something()
這樣的用法節省內存,快速,并且代碼還簡單
result = f.readlines() ------------------------ result = list(f)
這兩種寫法返回的結果是一樣的
顯然我們推薦第四種用法。
如何處理大文件
大文件主要問題在于占用內存較大,我們不能一下子將文件全部內容讀入內存,最好的做法如下:
with open("log.txt") as f: for line in f: do_something_with(line)
一行一行讀取,速度也更快,使用with語句,無論內部是否出現異常,在結束時,文件對象都會被關閉,因此在處理大文件時,非常推薦這種做法。
“python進行文件操作的方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。