Python檔案輸入輸出

2021-09-24 13:45:33 字數 2704 閱讀 6651

本文以.txt檔案為例,說明python從.txt檔案中讀取內容和向.txt檔案寫入內容的方法。

a.txt檔案內容:

犬吠水聲中,桃花帶雨濃。

樹深時見鹿,溪午不聞鐘。

野竹分青靄,飛泉掛碧峰。

無人知所去,愁倚兩三松。

讀取檔案:

open(filename, mode)

open返回乙個檔案物件。第乙個引數是乙個包含檔名的字串。第二個引數是描述檔案的使用模式,mode='r』表示唯讀,mode='w』表示只寫,mode=『r+』表示可讀可寫,mode=『a』表示開啟文件並把要寫的內容附在文件末尾,不會刪除文件已有內容。預設模式為』r』。

poem =

open

('./a.txt'

,'r'

)print

(poem)

# 輸出

poem =

open

('./a.txt'

,'r'

)print

(list

(poem)

)# 輸出

# ['犬吠水聲中,桃花帶雨濃。\n', '樹深時見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']

通常我們使用with關鍵字來讀取檔案物件,with關鍵字可以在with語句結束後自動關閉檔案,避免一直占用計算機記憶體資源。

with

open

('./a.txt'

,'r'

)as f:

d = f.read(

)print

(d)print

(f.closed)

# 輸出

# 犬吠水聲中,桃花帶雨濃。

# 樹深時見鹿,溪午不聞鐘。

# 野竹分青靄,飛泉掛碧峰。

# 無人知所去,愁倚兩三松。

# true

除了讀取檔案中的所有內容,我們還可以一行一行的讀取檔案。

with

open

('./a.txt'

)as f:

for line in f:

print

(line)

# 輸出

# 犬吠水聲中,桃花帶雨濃。

# 樹深時見鹿,溪午不聞鐘。

# 野竹分青靄,飛泉掛碧峰。

# 無人知所去,愁倚兩三松。

因為在每一行末尾處都帶有換行符,因此每行之間都有一行為空。可以驗證一下:

with

open

('./a.txt'

)as f:

d = f.readlines(

)print

(d)# 輸出

# ['犬吠水聲中,桃花帶雨濃。\n', '樹深時見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']

我們可以通過str.strip([chars])函式來刪除字串末尾的換行符。strip()函式可以刪除字串首尾的指定字元或者字串,引數chars指定了要刪除的字元的集合。如果沒有指定,則預設為空格或者換行符。但是strip()只能刪除開頭或者結尾的字元或字串,不能刪除中間部分的字元。

with

open

('./a.txt'

)as f:

for line in f:

print

(line.strip())

# 輸出

# 犬吠水聲中,桃花帶雨濃。

# 樹深時見鹿,溪午不聞鐘。

# 野竹分青靄,飛泉掛碧峰。

# 無人知所去,愁倚兩三松。

因為字串是不可變物件,因此,strip()函式並不是在原來的字串中直接進行刪除,而是將刪除首尾字元後的字串作為乙個新物件並返回。可以驗證一下:

a =

' special '

# 建立乙個字串物件並將變數a指向它

print(id

(a))

# 列印a在記憶體中的位址

a = a.strip(

)# 將刪除首尾空格後的字串作為乙個新物件,並將a指向它

print(id

(a))

# 打a串在記憶體中的位址

# 輸出

# 140251513494960

# 140251513470680

可得看到,刪除前後的字串位址並不相同,說明它們是不同的物件。

with

open

('./a.txt'

,'a'

)as f:

f.write(

)with

open

('./a.txt'

,'r'

)as f:

for line in f:

print

(line.strip())

# 輸出

# 犬吠水聲中,桃花帶雨濃。

# 樹深時見鹿,溪午不聞鐘。

# 野竹分青靄,飛泉掛碧峰。

# 無人知所去,愁倚兩三松。

python 檔案輸入輸出

我們開啟乙個檔案,並使用乙個物件來表示該檔案 f open 檔名,模式 f open f.txt 文字形式 唯讀模式 預設值 f open f.txt rt 文字形式 唯讀模式 同預設值 f open f.txt w 文字形式 覆蓋寫模式 f open f.txt a 文字形式 追加寫模式 讀檔案 ...

Python 檔案和輸入輸出

1 內建函式open 的基本語法 file object open file name,access mode r buffering 1 buffering代表訪問檔案所使用的緩衝方式,其中0代表不緩衝,1表示只緩衝一行資料,任何其他大於1的值代表使用給定值作為緩衝區大小。不提供該引數或者給定負值...

python 檔案操作(輸入 輸出)

檔案物件不僅可以訪問普通的磁碟檔案,也可以訪問任何其他型別抽象層面的 檔案 檔案只是連續的位元組序列,資料的傳輸經常用到位元組流。file object open file name,access mode r buffering 1 buffering用於指示訪問檔案所採用的緩衝方式。其中0表示不...