在 Python 中的新目錄中創建和保存文件

商業

以下部分說明如何使用新目錄(文件夾)作為目標在 Python 中創建和保存新文件。

  • 使用 open() 指定不存在的目錄時出錯(FileNotFoundError)
  • os.makedirs()創建目錄
  • 使用目標創建新文件的示例代碼

以下是文本文件的示例。

存儲圖像時,是否可以指定包含不存在目錄的路徑(或者如果不存在是否自動創建)取決於庫。
FileNotFoundError如果出現這個錯誤,可以在執行函數之前用os.madeirs()新建一個目錄進行保存,如下例。

使用 open() 指定不存在的目錄時出錯(FileNotFoundError)

使用內置函數 open() 創建新文件時,如果將包含新目錄(不存在的目錄)的路徑指定為第一個參數作為目標,則會發生錯誤。(FileNotFoundError)

open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError

open() 的第一個參數可以是絕對路徑或相對於當前目錄的路徑。

open()的基本用法,比如在現有目錄中新建文件,或者覆蓋或追加到現有文件中,可以參考以下文章。

創建目錄(os.makedirs())

在不存在的目錄中創建新文件時,需要在 open() 之前創建目錄。

如果您使用的是 Python 3.2 或更高版本,使用 os.makedirs() 和參數exist_ok=True 會很方便。即使目標目錄已經存在,也不會出錯,可以一次性創建目錄。

import os

os.makedirs(new_dir_path, exist_ok=True)

如果你有一個舊版本的 Python 並且在 os.makedirs() 中沒有參數exist_ok,如果你指定存在目錄的路徑,你會得到一個錯誤,所以使用 os.path.exists() 來檢查目錄的存在首先。

if not os.path.exists(new_dir_path):
    os.makedirs(new_dir_path)

有關詳細信息,請參閱以下文章。

使用目標創建新文件的示例代碼

以下是通過指定目標目錄創建和保存新文件的函數的代碼示例。

第一個參數 dir_path 是目標目錄的路徑,第二個參數 filename 是要創建的新文件的名稱,第三個參數 file_content 是要寫入的內容,每個都指定為字符串。

如果指定的目錄不存在,則創建一個新目錄。

import os

def save_file_at_dir(dir_path, filename, file_content, mode='w'):
    os.makedirs(dir_path, exist_ok=True)
    with open(os.path.join(dir_path, filename), mode) as f:
        f.write(file_content)

使用如下。

save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')

在這種情況下,將在 new_dir\sub_dir 中創建內容為“新文本”的文件 new_file.txt。換句話說,將新創建以下文件。new_dir/sub_dir/new_file.txt

使用 os.path.join() 連接目錄和文件名。

此外,open() 的模式被指定為參數。對於文本文件,默認的 ‘w’ 沒問題,但如果你想創建一個二進製文件,設置 mode=’wb’。