本文以.txt檔案為例,說明python從.txt檔案中讀取內容和向.txt檔案寫入內容的方法。
a.txt檔案內容:
犬吠水聲中,桃花帶雨濃。讀取檔案:樹深時見鹿,溪午不聞鐘。
野竹分青靄,飛泉掛碧峰。
無人知所去,愁倚兩三松。
open(filename, mode)open返回乙個檔案物件。第乙個引數是乙個包含檔名的字串。第二個引數是描述檔案的使用模式,mode='r』表示唯讀,mode='w』表示只寫,mode=『r+』表示可讀可寫,mode=『a』表示開啟文件並把要寫的內容附在文件末尾,不會刪除文件已有內容。預設模式為』r』。
poem =
open
('./a.txt'
,'r'
(poem)
# 輸出
通常我們使用with關鍵字來讀取檔案物件,with關鍵字可以在with語句結束後自動關閉檔案,避免一直占用計算機記憶體資源。poem =
open
('./a.txt'
,'r'
(list
(poem)
)# 輸出
# ['犬吠水聲中,桃花帶雨濃。\n', '樹深時見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']
除了讀取檔案中的所有內容,我們還可以一行一行的讀取檔案。with
open
('./a.txt'
,'r'
)as f:
d = f.read(
(d)print
(f.closed)
# 輸出
# 犬吠水聲中,桃花帶雨濃。
# 樹深時見鹿,溪午不聞鐘。
# 野竹分青靄,飛泉掛碧峰。
# 無人知所去,愁倚兩三松。
# true
因為在每一行末尾處都帶有換行符,因此每行之間都有一行為空。可以驗證一下:with
open
('./a.txt'
)as f:
for line in f:
(line)
# 輸出
# 犬吠水聲中,桃花帶雨濃。
# 樹深時見鹿,溪午不聞鐘。
# 野竹分青靄,飛泉掛碧峰。
# 無人知所去,愁倚兩三松。
我們可以通過str.strip([chars])函式來刪除字串末尾的換行符。strip()函式可以刪除字串首尾的指定字元或者字串,引數chars指定了要刪除的字元的集合。如果沒有指定,則預設為空格或者換行符。但是strip()只能刪除開頭或者結尾的字元或字串,不能刪除中間部分的字元。with
open
('./a.txt'
)as f:
d = f.readlines(
(d)# 輸出
# ['犬吠水聲中,桃花帶雨濃。\n', '樹深時見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']
with
open
('./a.txt'
)as f:
for line in f:
(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:
(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表示不...