1、讀檔案
舉例:>>> f = open('d:', 'r')
>>>> f.read()
'hello, world!'
>>>> f.close()開啟乙個檔案,使用open()函式,第乙個引數是檔案的路徑,第二個引數是讀的意思。如果路徑錯了會報錯誤:
>>> f = open('d://chen/test.txt', 'r')
traceback (most recent call last):
file "", line 1, in
filenotfounderror: [errno 2] no such file or directory: 'd://chen/test.txt'
>>>read():一次讀取全部內容,用乙個str物件接收存進記憶體;
close():關閉檔案,每次使用完一定要關閉,不關閉會占用系統資源。
open()函式還有其他的引數:
『rb』:讀取二進位制檔案
>>> f = open('/users/michael/test.jpg', 'rb')encoding:讀取指定編碼檔案
errors:如果檔案中有編碼不對的,如何處理。以下**是忽略(ignore);
>>> f = open('d:', 'r',encoding='gbk', errors='ignore')注意:
如果程式在執行**錯了,那麼最後執行的close()不能被呼叫,則關閉不了檔案一直占用系統資源,而系統同一時間開啟的檔案是有限的。此時,我們可以使用try…finally。
舉例:>>> try:
... f = open('d:', 'r')
... print(f.read())
... finally:
... if f:
... f.close()
...hello world!
>>>但是如果每次都要扎樣寫,未免有些繁瑣,所以,python提供了with語句來自動幫我們呼叫close()方法:
>>> with open('d:', 'r') as f:
... print(f.read())
...hello world!
>>>效果和前面的try…finally一樣,且自動幫你呼叫close(),**更簡潔。
讀取檔案方式:
讀取檔案的時候,除了read(),還有其他的方式,如:
read(size):一次讀取size長度的位元組,下面**是一次讀取1024個位元組。
>>> with open('d:', 'r') as f:
... print(f.read(1024))
...hello world!還可以用readline()一次讀取一行,用readlines()一次讀取所有內容並按行返回list
>>> with open('d:', 'r') as f:
... for line in f.readlines():
... print(line.strip()) #去掉每行後面的\n換行符
...hello world!
test到底使用哪種讀取方式比較好呢?
當檔案很小的時候建議用read()一次讀出所有,當不知道檔案大小的時候,建議用read(size)一次一次的讀取,當讀取配置檔案的時候,建議使用readlines()讀取。
2、寫檔案
舉例:>>> with open('d:', 'w') as f:
... f.write('hello world!')寫檔案引數和讀檔案都是用open()函式,『w』是寫的意思,如果想指定寫入編碼,可以再加乙個encoding引數。
注意:如果以』w『模式寫入檔案,如果已經存在該檔案,則會被覆蓋;如果想追加在其後,可以以』a『模式寫入:
>>> with open('d:', 'a') as f:
... f.write('hello world!')
python之讀寫檔案
fr open readfile.txt r fw open writefile.txt w print fr.readline print fr.tell print fr.readlines fw.write write line fw.close fr.seek 0,0 第乙個引數代表位元組數...
Python之檔案讀寫
本文介紹python語言中的對於檔案的讀寫等操作。本文使用python3 首先是對檔案的操作流程為 1.開啟檔案,得到檔案控制代碼並賦值給乙個變數 2.通過控制代碼對檔案進行操作 3.關閉檔案 對於檔案的操作就離不開open 函式 這個函式是python的io模組中的乙個內建函式 首先建議使用hel...
python之檔案讀寫
python檔案讀寫 檔案讀取 data open baotuquan r encoding utf 8 read print data 輸出前10行,第九行修改 for line in f count 0if count 9 print fen count 1continue print line...