iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 14
1
Software Development

糊裡糊塗Python就上手系列 第 14

[2020鐵人賽Day14]糊裡糊塗Python就上手-文件I/O操作

今日目標

今天來點實作面操作,對文字文件(txt)檔案的讀寫(I/O)操作

功能說明

開啟文件open()

open('file path', 'mode')

第一個參數需要有檔案路徑,第二個參數則是操作模式

Mode Description
r 讀取(檔案必須存在否則之後讀取會失敗)
w 新建檔案寫入(檔案不存在會新建檔案,檔案存在會覆蓋內容)
a 資料附加到舊檔案後面
r+ 讀取資料並可寫入
w+ 覆蓋檔案內容,寫入新的東西,可讀取資料(檔案不存在會新建檔案)
a+ 資料附加到舊檔案後面,可讀取資料
b 二進位模式

寫入文件write()

write()用於向文件寫入指定「字串」內容

f.write([str])

str 這邊必須為字串,否則會報錯

讀取文件read()

read()用於讀取文件,並可指定的讀取的字串長度,若未填寫則讀取整份文件

f.read([size])

size 將讀取文件的字串長度,若未填寫則讀取整份文件

讀取整行readline()

用於讀取文件整行內容,包含「\n」字元,並可指定的讀取的字串長度,若未填寫則讀取整行內容

f.read([size])

size 將讀取文件的字串長度,若未填寫則讀取整行內容

關閉文件close()

close()用於關閉已開啟的文件,使其無法執行讀取及寫入功能

f.close()

實際體驗

嘗試建立一份文件名為「text.txt」,並寫入內容「test」

path = 'text.txt'
f = open(path, 'w')
f.write('test')
f.close()

https://ithelp.ithome.com.tw/upload/images/20200929/20091333HS4oZxuD2a.png

接著,直接修改剛建立好的「text.txt」,多兩行內容,分別為「test2」、「test3」,然後將文件讀取印出來

path = 'text.txt'
f = open(path, 'r')
content = f.read()
print(content)
f.close()

https://ithelp.ithome.com.tw/upload/images/20200929/20091333M1ieL0auzk.png

這題彙整前兩個功能,先建立一份文件名為「text2.txt」,並寫入內容「test」,讀出第一次文件內容

接著在此文件後頭累加內容「test2」(需要換行,換行字元為"\n"),再度讀取出第二次文件內容(中間可以加入間隔行,較好觀測結果)

path = 'text2.txt'

# 寫入內容
f = open(path, 'w')
f.write('test')
f.close()

# 讀取數值
f = open(path, 'r')
content = f.read()
print(content)
f.close()

print('-----上為累加內容前,下為累加內容後-----')

# 在檔案後面累加內容
f = open(path, 'a')
f.write('\ntest2')
f.close()

# 讀取檔案累加後的內容
f = open(path, 'r')
content = f.read()
print(content)
f.close()

https://ithelp.ithome.com.tw/upload/images/20200929/20091333sKg7mIqVao.png

結論

以上為文件I/O的操作說明,可能有點複雜,但其實還挺實用的
之後篇章,將可能會寫到除了txt外的檔案I/O方法,例如CSV、JSON、XML之類,敬請期待


上一篇
[2020鐵人賽Day13]糊裡糊塗Python就上手-套件模組的使用方法
下一篇
[2020鐵人賽Day15]糊裡糊塗Python就上手-CSV手到擒來
系列文
糊裡糊塗Python就上手30

尚未有邦友留言

立即登入留言