使用 Python 讀寫文件
每種編程語言處理文件數(shù)據(jù)的方式不盡相同,Python 是這么干的。
有些數(shù)據(jù)是臨時的,它們在應(yīng)用程序運(yùn)行時存儲在內(nèi)存中,然后丟棄。但是有些數(shù)據(jù)是持久的。它們存儲在硬盤驅(qū)動器上供以后使用,而且它們通常是用戶最關(guān)心的東西。對于程序員來說,編寫代碼讀寫文件是很常見的,但每種語言處理該任務(wù)的方式都不同。本文演示了如何使用 Python 處理文件數(shù)據(jù)。
安裝 Python
在 Linux 上,你可能已經(jīng)安裝了 Python。如果沒有,你可以通過發(fā)行版軟件倉庫安裝它。例如,在 CentOS 或 RHEL 上:
$ sudo dnf install python3
在 macOS 上,你可以使用 MacPorts 或 Homebrew 安裝。在 Windows 上,你可以使用 Chocolatey 安裝。
一旦安裝了 Python,打開你最喜歡的文本編輯器,準(zhǔn)備好寫代碼吧。
使用 Python 向文件中寫入數(shù)據(jù)
如果你需要向一個文件中寫入數(shù)據(jù),記住有三個步驟:
- 打開
- 寫入
- 關(guān)閉
這與你在計算機(jī)上編碼、編輯照片或執(zhí)行其他操作時使用的步驟完全相同。首先,打開要編輯的文檔,然后進(jìn)行編輯,最后關(guān)閉文檔。
在 Python 中,過程是這樣的:
f = open('example.txt', 'w')
f.write('hello world')
f.close()
這個例子中,第一行以寫模式打開了一個文件,然后用變量 f
表示,我使用了 f
是因為它在 Python 代碼中很常見,使用其他任意有效變量名也能正常工作。
在打開文件時,有不同的模式:
w
代表寫入r+
代表可讀可寫a
表示追加
第二行表示向文件中寫入數(shù)據(jù),本例寫入的是純文本,但你可以寫入任意類型的數(shù)據(jù)。
最后一行關(guān)閉了文件。
使用 with
語法寫入數(shù)據(jù)
對于快速的文件交互,常用有一種簡短的方法可以寫入數(shù)據(jù)。它不會使文件保持打開狀態(tài),所以你不必記得調(diào)用 close()
函數(shù)。相反,它使用 with
語法:
with open('example.txt', 'a') as f:
f.write('hello open source')
使用 Python 讀取數(shù)據(jù)
如果你或你的用戶需要通過應(yīng)用程序需要向文件中寫入一些數(shù)據(jù),然后你需要使用它們,那么你就需要讀取文件了。與寫入類似,邏輯一樣:
- 打開
- 讀取
- 關(guān)閉
同樣的,這個邏輯反映了你一開始使用計算機(jī)就已知的內(nèi)容。閱讀文檔,你可以打開、閱讀,然后關(guān)閉。在計算機(jī)術(shù)語中,“打開”文件意味著將其加載到內(nèi)存中。
實際上,一個文本文件內(nèi)容肯定不止一行。例如,你需要讀取一個配置文件、游戲存檔或樂隊下一首歌曲的歌詞,正如你打開一本實體書時,你不可能立刻讀完整本書,代碼也只能解析已經(jīng)加載到內(nèi)存中的文件。因此,你可能需要遍歷文件的內(nèi)容。
f = open('example.tmp', 'r')
for line in f:
print(line)
f.close()
示例的第一行指明使用 讀 模式打開一個文件,然后文件交由變量 f
表示,但就像你寫數(shù)據(jù)一樣,變量名是任意的。f
并沒有什么特殊的,它只是單詞 “file” 的最簡表示,所以 Python 程序員會經(jīng)常使用它。
在第二行,我們使用了 line
,另一個任意變量名,用來表示 f
的每一行。這告訴 Python 逐行迭代文件的內(nèi)容,并將每一行的內(nèi)容打印到輸出中(在本例中為終端或 IDLE)。
使用 with
語法讀取數(shù)據(jù)
就像寫入一樣,使用 with
語法是一種更簡短的方法讀取數(shù)據(jù)。即不需要調(diào)用 close()
方法,方便地快速交互。
with open('example.txt', 'r') as f:
for line in f:
print(line)
文件和 Python
使用 Python 有很多方法向文件寫入數(shù)據(jù),包括用 JSON、YAML、TOML 等不同的格式寫入。還有一個非常好的內(nèi)置方法用于創(chuàng)建和維護(hù) SQLite 數(shù)據(jù)庫,以及許多庫來處理不同的文件格式,包括 圖像、音頻和視頻等。