小编典典

尝试使用open(filename,'w')会出现IOError:[Errno 2]如果目录不存在,则没有这样的文件或目录

python

我正在尝试使用Python创建并写入文本文件。我已搜索,但找不到此错误的解决方案/原因。

这是无效的代码:

afile = 'D:\\temp\\test.txt'
outFile = open(afile, 'w' )
outFile.write('Test.')
outFile.close()

# Error: 2
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'D:\\temp\\test.txt' #

我发现的大多数答案都与路径中的斜杠有关,所以…

I tried 'D:/temp/test.txt' and got an error.
I tried r'D:\temp\test.txt' and got an error.

当我尝试在D:/的根目录创建文件时,我成功了。

'D:/test.txt' works.
'D:\\test.txt' works.
r'D:\test.txt' works.

似乎在尝试创建文件时无法创建所需的目录路径
。在Windows(7)上使用Python在特定路径下创建文件的正确方法是什么?我是否误解了open()可以做什么?如果目录不存在,它会创建目录吗?还是需要我在“写入”模式下使用open()创建文件之前显式创建目录路径?


阅读 215

收藏
2021-01-20

共1个答案

小编典典

您猜想该文件的父目录必须存在才能open成功是正确的。解决此问题的简单方法是致电os.makedirs

文档中

os.makedirs(路径[,模式])

递归目录创建功能。与相似mkdir(),但是使所有中间级目录都包含叶子目录。

因此,您的代码可能会运行如下代码:

filename = ...
dirname = os.path.dirname(filename)
if not os.path.exists(dirname):
    os.makedirs(dirname)
with open(filename, 'w'):
    ...
2021-01-20