Trying to use open( filename, 'w' ) gives IOError: [Errno 2] No such file or directory:

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

I am trying to create and write to a text file from Maya using Python. The version of Python in this version of Maya is 2.7.3. I have searched and cannot find a solution/reason for this error.

Here's the code that doesn't work.

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' # 

Most answers I found related to the slashes in the path, so...

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

When I try to create a file at the root of D:/ I have success.

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

It seems that I can't create the directory path I would like while trying to create the file. What is the correct method for creating files at a specific path with Python on Windows(7)? Am I misunderstanding what open() can do? Does it create directories if they don't exist or do I need explicitly create the directory path before I use open() in 'write' mode to create a file?

回答1:

You are correct in surmising that the parent directory for the file must exist in order for open to succeed. The simple way to deal with this is to make a call to os.makedirs.

From the documentation:

os.makedirs(path[, mode])

Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory.

So your code might run something like this:

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


回答2:

If you try to create a file in a directory that doesn't exist, you will get that error.

You need to ensure the directory exists first. You can do that with os.makedirs() as per this answer.



回答3:

Alternately, you could check if the file exists before opening it with:

os.path.exists (afile)

Which will either say True or False, depending on whether it exists.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!