標識符 | 描述 |
---|---|
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。 |
r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
w | 打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。 |
wb | 以二進制格式打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。 |
w+ | 打開一個文件用於讀寫。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。 |
wb+ | 以二進制格式打開一個文件用於讀寫。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。 |
a | 打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。 |
ab | 以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。 |
a+ | 打開一個文件用於讀寫。若是該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。若是該文件不存在,建立新文件用於讀寫。 |
ab+ | 以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。若是該文件不存在,建立新文件用於讀寫。 |
要以讀文件的模式打開一個文件對象,使用Python內置的open()函數,傳入文件名和標示符。緩存
>>> f = open('/Users/wangjuan/test.txt', 'r') #文件打開成功,調用read()方法能夠一次讀取文件的所有內容 >>> f.read() 'Hello, it is a test case!' #調用close()方法關閉文件 >>> f.close()
文件使用完畢後必須關閉,由於文件對象會佔用操做系統的資源,而且操做系統同一時間能打開的文件數量也是有限的。app
因爲文件讀寫時都有可能產生IOError,一旦出錯,後面的f.close()就不會調用。因此,爲了保證不管是否出錯都能正確地關閉文件,咱們可使用try ... finally來實現:函數
try: f = open('/Users/wangjuan/test.txt', 'r') print(f.read()) finally: if f: f.close()
可是每次都這麼寫實在太繁瑣,因此,Python引入了with語句來自動幫咱們調用close()方法:spa
with open('/Users/wangjuan/test.txt', 'r') as f: print(f.read())
readlines() 方法用於讀取全部行(直到結束符 EOF)並返回列表,該列表能夠由 Python 的 for... in ... 結構進行處理。若是碰到結束符 EOF 則返回空字符串。舉例以下:操作系統
file = '/Users/wangjuan/test.txt' f = open(file, 'r') # 按行讀出文件內容 sourceInLines = f.readlines() f.close() # 定義一個空列表,用來存儲結果 new = [] for line in sourceInLines: temp1 = line.strip('\n') # 去掉每行最後的換行符'\n' temp2 = temp1.split(',') # 以','爲標誌,將每行分割成列表 new.append(temp2) # 將上一步獲得的列表添加到new中
寫文件和讀文件是同樣的,惟一區別是調用open()函數時,傳入標識符'w'或者'wb'表示寫文本文件或寫二進制文件:指針
>>> f = open('/Users/wangjuan/test.txt', 'w') >>> f.write('Hello, world!') >>> f.close()
能夠反覆調用write()來寫入文件,可是務必要調用f.close()來關閉文件。當咱們寫文件時,操做系統每每不會馬上把數據寫入磁盤,而是放到內存緩存起來,空閒的時候再慢慢寫入。只有調用close()方法時,操做系統才保證把沒有寫入的數據所有寫入磁盤。忘記調用close()的後果是數據可能只寫了一部分到磁盤,剩下的丟失了。因此,仍是用with語句來得保險:code
import os def write_re(result,type): file = str(os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, "data/result.txt"))) with open(file, type) as f: f.write(result)
固然若是你想寫入的內容繼續疊加的話,可使用標識符'a'或者' a+'或者'ab+'。對象
以上,對你有幫助的話,點贊吧~ip