當我們在Python里面寫文件時,我們常用的模式為 w
模式,這種模式下,如果文件不存在,就會生成文件;如果文件已經存在,就會直接覆蓋。
有時候,如果文件已經存在,直接覆蓋文件可能會導致重要數據丟失。你不希望再覆蓋文件,那么你可能會這樣寫代碼:
import os if os.path.exists('/test/file.txt'): print('文件已經存在') else: with open('/test/file.txt', 'w', encoding='utf-8') as f: f.write('abc')
這樣寫雖然可以解決問題,但是Python 3提供了一個更好的解決辦法。使用 x
模式。
於是代碼可以簡化為:
with open('/test/file.txt', 'x', encoding='utf-8') as f: f.write('abc')
當文件不存在的時候,這兩行代碼就能生成文件,並把內容寫入到文件中。當文件已經存在的時候,就會直接拋出一個異常,如下圖所示。
使用 x
模式,就可以有效防止文件被不小心覆蓋的問題。如果要寫二進制文件,那么可以把 x
改寫為 xb
。不過需要注意,這種寫法只有Python 3才能使用。Python 2是不能這樣寫的。