open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
具體須要查看API,這裏只介紹幾個經常使用的方法。python
open函數的文件名是必傳參數,返回一個文件對象編程
#打開一個文件。 f = open('read.txt', 'r')
值 | 功能描述 |
---|---|
'r' | 讀模式 |
'w' | 寫模式 |
'a' | 追加模式 |
'b' | 二進制模式 |
'+' | 讀/寫模式 |
b參數一盤處理文本文件時是用不到b參數,便但處理其它類型的文件(二進制文件,)好比mp3或者圖像,那麼應該在模式參數中添加b安全
緩衝區,默認是無緩衝區,ide
若是參數是0,IO操做就是無緩衝,直接將數據寫在硬盤上,函數
若是參數是1,IO操做就是有緩衝,數據先寫到內存裏,只有使用,flush函數,或者close函數,纔會將數據更新到硬盤中,code
文件讀取主要分爲按字節讀取和按行進行讀取,經常使用的方法有read(),readlines(),close()對象
若是成功打開文本文件,接下來調用read()方法則能夠一次性將文件內容,所有寫入到內存中,最後返回的是str類型的對象:
f.read()ip
因爲文件操做可能會出現IO異常,一旦出現IO異常,後面的close()方法就不會調用。因此爲了保證程序的健壯性,咱們須要使用try...finally來實現。內存
try: f = open('read.txt', 'r') print(f.read()) finally: if f: f.close()
python提供了一種簡單的寫法,使用with語句來替代try...finally代碼塊和close()方法。資源
with open('read.txt', 'r') as fileReader: print(fileReader.read())
因爲可能會出現文件過大,將會出現內存不足,python提供更加合理的作法,調用readline()來每次讀一行內容。
with open('read.txt', 'r') as fileReader: for line in fileReader.readlines(): print(line.strip()) 獲得結果: 1 2 3 4 5 6 7 8 9
推薦寫法:
with open('read.txt', 'w') as fileWriter: for num in range(1, 100): fileWriter.write(str(num)+'\n')