一、列出IO操作的辨別符及描述
辨別符 | 描述 |
---|---|
r | 以隻讀方式打開檔案。檔案的指針将會放在檔案的開頭。這是預設模式。 |
rb | 以二進制格式打開一個檔案用于隻讀。檔案指針将會放在檔案的開頭。這是預設模式。 |
r+ | 打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。 |
rb+ | 以二進制格式打開一個檔案用于讀寫。檔案指針将會放在檔案的開頭。 |
w | 打開一個檔案隻用于寫入。如果該檔案已存在則将其覆寫。如果該檔案不存在,建立新檔案。 |
wb | 以二進制格式打開一個檔案隻用于寫入。如果該檔案已存在則将其覆寫。如果該檔案不存在,建立新檔案。 |
w+ | 打開一個檔案用于讀寫。如果該檔案已存在則将其覆寫。如果該檔案不存在,建立新檔案。 |
wb+ | 以二進制格式打開一個檔案用于讀寫。如果該檔案已存在則将其覆寫。如果該檔案不存在,建立新檔案。 |
a | 打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。 |
ab | 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。也就是說,新的内容将會被寫入到已有内容之後。如果該檔案不存在,建立新檔案進行寫入。 |
a+ | 打開一個檔案用于讀寫。如果該檔案已存在,檔案指針将會放在檔案的結尾。檔案打開時會是追加模式。如果該檔案不存在,建立新檔案用于讀寫。 |
ab+ | 以二進制格式打開一個檔案用于追加。如果該檔案已存在,檔案指針将會放在檔案的結尾。如果該檔案不存在,建立新檔案用于讀寫。 |
二、讀TXT檔案
要以讀檔案的模式打開一個檔案對象,使用Python内置的open()函數,傳入檔案名和标示符。
>>> f = open('/Users/wangjuan/test.txt', 'r')
#檔案打開成功,調用read()方法可以一次讀取檔案的全部内容
>>> f.read()
'Hello, it is a test case!'
#調用close()方法關閉檔案
>>> f.close()
檔案使用完畢後必須關閉,因為檔案對象會占用作業系統的資源,并且作業系統同一時間能打開的檔案數量也是有限的。
由于檔案讀寫時都有可能産生IOError,一旦出錯,後面的f.close()就不會調用。是以,為了保證無論是否出錯都能正确地關閉檔案,我們可以使用try ... finally來實作:
try:
f = open('/Users/wangjuan/test.txt', 'r')
print(f.read())
finally:
if f:
f.close()
但是每次都這麼寫實在太繁瑣,是以,Python引入了with語句來自動幫我們調用close()方法:
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中
三、寫TXT檔案
寫檔案和讀檔案是一樣的,唯一差別是調用open()函數時,傳入辨別符'w'或者'wb'表示寫文本檔案或寫二進制檔案:
>>> f = open('/Users/wangjuan/test.txt', 'w')
>>> f.write('Hello, world!')
>>> f.close()
可以反複調用write()來寫入檔案,但是務必要調用f.close()來關閉檔案。當我們寫檔案時,作業系統往往不會立刻把資料寫入磁盤,而是放到記憶體緩存起來,空閑的時候再慢慢寫入。隻有調用close()方法時,作業系統才保證把沒有寫入的資料全部寫入磁盤。忘記調用close()的後果是資料可能隻寫了一部分到磁盤,剩下的丢失了。是以,還是用with語句來得保險:
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+'。
以上,對你有幫助的話,點贊吧~
作者:
擱淺出處:
http://www.cnblogs.com/xiaoxi-3-/如果對您有幫助,請關注我的同名簡書:
https://www.jianshu.com/u/da1677475c27本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。