2

可能是一个非常菜鸟的问题..

但是当我尝试时:

f = open(os.path.join(os.path.dirname(__file__), filename),"w")

我收到一个错误

IOError: [Errno 2] No such file or directory: '/home/path/filename'

是不是因为我说了“w”..如果它还没有,它会写一个新文件吗?

4

2 回答 2

3

错误消息可以像这样重现:

import os
filename = '/home/path/filename'
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
f.close()

# IOError: [Errno 2] No such file or directory: '/home/path/filename'

这里的问题是这filename是一个绝对路径,所以 os.path.join忽略第一个参数并返回filename

In [20]: filename = '/home/path/filename'

In [21]: os.path.join(os.path.dirname(__file__), filename)
Out[21]: '/home/path/filename'

因此,您不仅要指定一个不存在的文件,还要指定一个不存在的目录open拒绝创建目录。

于 2013-02-13T18:31:38.670 回答
0

你是不是要按字面意思写home/path/filename?在那种情况下,它的抱怨是/home/path不存在的。尝试在已经存在的目录中创建一个名为的目录/home/path或选择一个文件名(例如,找出您的实际主目录的路径。)您也可以使用相对路径。 有关绝对路径和相对路径之间的区别,请参见
http://en.wikipedia.org/wiki/Path_%28computing%29 。

于 2013-02-13T18:27:33.963 回答