1.簡介
讀寫檔案是常見的IO操作,python內置了讀寫文本的函式,
讀寫檔案的模式描述如下:
| 模式 | 描述 |
|---|---|
| r | 以只讀方式打開檔案,檔案的指標將會放在檔案的開頭,這是默認模式, |
| rb | 以二進制格式打開一個檔案用于只讀,檔案指標將會放在檔案的開頭,這是默認模式, |
| r+ | 打開一個檔案用于讀寫,檔案指標將會放在檔案的開頭, |
| rb+ | 以二進制格式打開一個檔案用于讀寫,檔案指標將會放在檔案的開頭, |
| w | 打開一個檔案只用于寫入,如果該檔案已存在則將其覆寫,如果該檔案不存在,創建新檔案, |
| wb | 以二進制格式打開一個檔案只用于寫入,如果該檔案已存在則將其覆寫,如果該檔案不存在,創建新檔案, |
| w+ | 打開一個檔案用于讀寫,如果該檔案已存在則將其覆寫,如果該檔案不存在,創建新檔案, |
| wb+ | 以二進制格式打開一個檔案用于讀寫,如果該檔案已存在則將其覆寫,如果該檔案不存在,創建新檔案, |
| a | 打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,也就是說,新的內容將會被寫入到已有內容之后,如果該檔案不存在,創建新檔案進行寫入, |
| ab | 以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,也就是說,新的內容將會被寫入到已有內容之后,如果該檔案不存在,創建新檔案進行寫入, |
| a+ | 打開一個檔案用于讀寫,如果該檔案已存在,檔案指標將會放在檔案的結尾,檔案打開時會是追加模式,如果該檔案不存在,創建新檔案用于讀寫, |
| ab+ | 以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,如果該檔案不存在,創建新檔案用于讀寫, |
2.讀取檔案
文本資訊如下:

1讀取檔案的基本資訊
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
# 讀取檔案資訊
print ("檔案名: ", f.name)
print ("是否已關閉 : ", f.closed)
print ("訪問模式 : ", f.mode)
print ("末尾是否強制加空格 : ", f.softspace)
# 關閉檔案
f.close()

2一次性讀取
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
# 一次性讀取全部內容,不安全
print ('一次性全部讀取:\n', f.read())
f.close()

3多次讀取
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
# 檔案長度
# print '檔案長度:', len(f.read())
# 從檔案的開頭讀取13個位元組,超過文本長度則讀取全部
print ('第一次讀取:\n', f.read(13))
# 繼續讀取4個位元組
print ('第二次讀取:\n', f.read(4))
f.close()

4按行讀取
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
# 分行讀取
print ('讀取第一行:\n', f.readline().strip())
print ('讀取第二行的4個位元組:\n', f.readline(4))
f.close()

5file作為迭代器
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
for index in range(3):
# file自身作為迭代器
line = f.next()
print (line.strip())

6按行讀取并存為list
# 只讀方式打開文本檔案
f = open('./readout.txt', 'r')
# 一次性讀取所有行并且回傳list
fileList = f.readlines()
# ['line one\n', 'line two\n', '\xe4\xb8\xad\xe6\x96\x87\xe6\xb5\x8b\xe8\xaf\x95']
print ('List串列:\n', fileList)
for line in fileList:
# #去掉每行頭尾空白
print (line.strip())
f.close()

7讀取二進制檔案
# 打開二進制檔案,例如圖片、視頻
f = open('./readpicture.jpg', 'rb')
print (f.read())
f.close()

3.寫入檔案
1寫入檔案的基本資訊
# 只寫方式打開檔案,寫入文本
f = open('./writein.txt', 'w')
# 讀取檔案資訊
print "檔案名: ", f.name
print "是否已關閉 : ", f.closed
print "訪問模式 : ", f.mode
print "末尾是否強制加空格 : ", f.softspace
# 關閉檔案
f.close()
2多種寫入
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:857662006
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
# 只寫方式打開檔案,寫入文本
f = open('./writein.txt', 'w')
# 寫入文本
f.write('line one')
f.close()
# 只寫方式打開檔案,以序列方式寫入
f = open('./writein.txt', 'w')
contentList = ['line one \n', 'line two \n', '中文測驗 \n']
# 寫入序列
f.writelines(contentList)
f.close()
4.其他函式 file.tell() 、file.seek(offset,[],whence)
# 以讀寫方式打開檔案,以序列方式寫入
f = open('./writein.txt', 'w+')
contentList = ['line one \n', 'line two \n', '中文測驗 \n']
# 寫入序列
f.writelines(contentList)
# 指標位置:file.tell()
print '寫入后指標所在位置:', f.tell()
# 指標偏移:file.seek(offset[, whence])
# 前者為偏移量,后者為指標位置(默認0表示初始位置,1表示當前位置,2表示末尾位置)
f.seek(0)
print '偏移后指標所在位置:', f.tell()
print '資料:\n', f.read()
f.close()

5.使用with陳述句配合IO操作
with open('/path/to/file', 'r') as f:
print f.read()
注:該種方式可以自動呼叫close()方法,避免出錯!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445499.html
標籤:其他
上一篇:java中的多執行緒
