Trying to use open(filename, 'w' ) gives IOError: [Errno 2] No such file or directory if directory doesn't exist
我正在尝试使用python创建并写入文本文件。我已搜索过,无法找到此错误的解决方案/原因。
以下是不起作用的代码:
1 2 3 4 5 6 7 8 9 | 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' # |
我发现的大多数答案都与路径中的斜线有关,所以…
1 2 | I tried 'D:/temp/test.txt' and got an error. I tried r'D:\temp\test.txt' and got an error. |
当我试图在d:的根目录下创建一个文件时,我已经成功了。
1 2 3 | 'D:/test.txt' works. 'D:\\test.txt' works. r'D:\test.txt' works. |
似乎在创建文件时无法创建所需的目录路径。在Windows(7)上使用python在特定路径创建文件的正确方法是什么?我是否误解open()能做什么?如果目录不存在,它会创建目录吗?或者在"写"模式下使用open()创建文件之前,需要显式创建目录路径吗?
您认为文件的父目录必须存在才能使
从文档中:
os.makedirs(path[, mode])
Recursive directory creation function. Like
mkdir() , but makes all intermediate-level directories needed to contain the leaf directory.
因此,您的代码可能运行如下所示:
1 2 3 4 5 6 | filename = ... dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.makedirs(dirname) with open(filename, 'w'): ... |
如果尝试在不存在的目录中创建文件,则会出现此错误。
您需要首先确保目录存在。根据这个答案,你可以用
或者,您可以在打开文件之前检查它是否存在:
这要么说对要么说错,取决于它是否存在。