Python3.4:使用模式“w”打开文件仍会出现“FileNotFound”错误

21

我遇到了一个小问题:使用open()函数并设置'w'模式时,所有文档都说如果文件不存在则会创建该文件。不幸的是,在我的情况下,出现了FileNotFound错误,原因未知。

with open(newFileName, 'w') as newFile:
    #CODE

我收到了以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'path of file I have specified'

你有任何想法为什么会出现这种情况吗?提前感谢!

编辑:对于那些问这个目录存不存在的人,我已经对代码进行了小改动,可能会向你展示这确实是正确的路径。

if not os.path.exists("example"):
    os.makedirs("example")

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

newFileName = "example/restOfPath"
newFileName = os.path.join(BASE_DIR,newFileName)

with open(newFileName, 'w') as newFile:

我仍然遇到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'correctPathToDirectory/example/restOfPath'

编辑2:请忽略本问题,问题已解决。在“示例”之后创建了第二个目录,因此它无法工作。愚蠢的错误。


你可以执行 print(newFileName) 命令,查看所提到的文件。 - Praveen
3
请问新文件名 newFileName 的值是多少?我怀疑它可能是例如 /some/dir/filename,其中 /some/dir 不存在。 - Bastien Léonard
@WédneyYuri OP并不是在询问如何以读写模式打开文件... - nbro
@Balaam:如果您的代码无法成功创建新目录,那么您应该会收到错误消息,但是您是否检查它是否已成功创建? - PM 2Ring
是的,目录“example”已创建。 - Balaam
显示剩余4条评论
1个回答

32

出现此错误的原因可能是包含您的新文件的目录尚不存在。

open() 使用 'w' 参数只会为您创建不存在的文件,而不会创建整个目录路径。因此,您首先需要为该文件创建目录。


我确实考虑到了这种可能性,所以在那行代码之前创建了该目录。 - Balaam
9
另一个可能性是,您的程序在指定的目录中没有写入权限。 - x squared
也许,@x-squared,但是这段代码将在其他人的机器上运行,我不能要求他们在运行代码之前进行chmod。有没有绕过这个问题的方法? - Balaam
这是您选择的目录吗?您始终可以写入用户本地目录,例如在Windows中的$APPDATA和Linux中的$HOME/.config。 - x squared
这就是问题所在。如果“blocks”不存在,你会创建文件夹“example”。但即使“blocks”存在,你也会将文件路径更改为“example/...”。 - x squared
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接