10. 檔案讀寫

I. 讀檔

通常有兩種方式: 方法一:

f = open(<檔名>) # 讀檔一般習慣將它存在名稱為f的變數裡

不過使用完畢後要記得關閉它

f.close()

方法二: 【此方式使用完畢後會自動關閉檔案,因此較推薦】

with open(<檔名>) as f:

【比較看看】

方法一:

f = open("moduleA.py")
print(f.closed) # False (還未關閉)
f.close()

方法二:

with open("moduleA.py") as f:
    print(f.closed) # False (還未關閉)
print(f.closed) # True (已關閉)

A.開檔模式

開啟檔案時需指名開檔模式,根據開啟的模式,只能使用限定的功能 寫法:【open(<檔名>, <模式>)

模式功能若存在此檔名寫入方式若不存在此檔名

r

讀取

讀取

Error

r+

寫入+讀取

讀取

從第一列開始覆蓋 (並沒有整個檔案覆蓋)

Error

w

寫入

整個檔案覆蓋

整個檔案覆蓋

開新檔案

w+

寫入+讀取

整個檔案覆蓋

整個檔案覆蓋

開新檔案

a

寫入

讀取

接續

開新檔案

a+

寫入+讀取

讀取

接續

開新檔案

B.開檔後讀取檔案內容

with open("moduleA.py", "r") as f:
    s = f.read() 
    print(s)

II.寫檔

A. 開檔後寫入檔案內容

【試試看看】

下列三種方法的結果有何不同?

# 請先自行新增file_r.txt空檔
for k in range(3):
    with open('file_r.txt', 'r+') as f:
        f.write(f'this is line {k}\n')
# 請先自行新增file_w.txt空檔
for k in range(3):
    with open('file_w.txt', 'w+') as f:
        f.write(f'this is line {k}\n')
# 請先自行新增file_a.txt空檔
for k in range(3):
    with open('file_a.txt', 'a+') as f:
        f.write(f'this is line {k}\n')

B. 開檔後先寫入再讀取檔案內容

【試試看看】

下列三種個.txt檔都請先事先設為:

line: 70
line: 80 
line: 90 
line: 20
line: 10
line: 00

再開始測試下列三種讀寫檔案方式:

with open('file_r.txt', 'r+') as f:
    for k in range(3):
        f.write(f'line: {k} \n')
    f.seek(0) # 回到檔案第一列第一行
    print(f.read())
with open('file_w.txt', 'w+') as f:
    for k in range(3):
        f.write(f'line: {k} \n')
    f.seek(0) # 回到檔案第一列第一行
    print(f.read())
with open('file_a.txt', 'a+') as f:
    for k in range(3):
        f.write(f'line: {k} \n')
    f.seek(0) # 回到檔案第一列第一行
    print(f.read())

Last updated