下面几节解释了如何在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(),参数existence_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_file.txt将被创建在new_dir/sub_dir。换句话说,以下文件将被新创建。new_dir/sub_dir/new_file.txt
用os.path.join()将目录和文件名连接起来。
另外,open()的模式被指定为一个参数。对于文本文件,默认的'w'就可以了,但如果你想创建一个二进制文件,请设置 mode='wb'。