讀檔案
當我們在工作中需要從檔案中獲取內容的時候,我們可以使用Python的內建方法open來完成。
第一步:開啟檔案f = open('info.txt')print(f)
我們可以看到,預設的檔案開啟模式為'r',即只讀。
直接open會返回一個檔案物件。
獲取檔案物件內容f = open('info.txt')for i in f: print(i)
透過上面的結果,我們可以知道,檔案物件是一個可迭代的物件,透過for迴圈,我們就可以拿到其內容。
更優雅的讀取方式readf = open('info.txt')res = f.read(100)print(res)
read(count),我們傳入100,代表我們想要讀取100個位元組。
更優雅的讀取方式readlinef = open('info.txt')res = f.readline()print(res)
如上可知,readline每次只讀取一行內容。
注意:readline在讀取一行後,檔案控制代碼會停留在上次讀取的位置,即透過多次readline可實現順序讀取。
readlines當我們需要快速的讀取全部內容的時候,我們需要使用readlines
f = open('info.txt')res = f.readlines()print(res)
如上,readlines返回一個列表物件,我們可以透過遍歷列表即可讀取每一行的內容。
寫檔案普通寫我們已經知道預設的open是r模式,所以寫檔案就需要我們在開啟檔案的時候指定w模式,如果需要讀許可權,則要使用w+模式。
f = open('info.txt',mode='w+')f.write('hello,python測試和開發!')res = f.readlines()print(res)
為什麼讀取到的內容是空的呢?因為寫入的內容還在記憶體中,當你進行檔案關閉的時候才會寫入檔案。
f = open('info.txt',mode='w+')f.write('hello,python測試和開發!')f.close()s = open('info.txt')res = s.readlines()print(res)
追加寫
f = open('info.txt',mode='w+')f.write('hello,python測試和開發!')f.close()s = open('info.txt',mode='w+')s.write('ok')s.close()m = open('info.txt')res = m.readlines()print(res)
注意:當我們以w+模式開啟檔案的時候,預設會清空檔案。如果需要追加內容到檔案,則需要採用a模式。
f = open('info.txt',mode='w+')f.write('hello,python測試和開發!')f.close()s = open('info.txt',mode='a')s.write('ok')s.close()m = open('info.txt')res = m.readlines()print(res)
如上,已經解決。
優雅的讀寫以上面的操作,我們都需要開啟,讀寫,再關閉,有沒有一種方式可以不用這麼麻煩呢?
with關鍵字其內部實現了__enter__和__exit__方法,我們可以直接使用with實現優雅的檔案開啟關閉處理。
with open('info.txt',mode='w+') as f: f.write('hello,python測試和開發!')
怎麼樣,是不是很優雅!
附錄幾種開啟檔案模式的區別幾種檔案物件的屬性所有的檔案開啟模式
最新評論