无法在python中写入文件

时间:2013-02-13 18:23:21

标签: python

可能是一个非常棒的问题..

但是 当我尝试:

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

我收到错误

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

不是因为我说过“w”..它会写一个新文件,如果它已经不存在了吗?

2 个答案:

答案 0 :(得分: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拒绝创建目录。

答案 1 :(得分:0)

你是否真的想写home/path/filename?在这种情况下,它抱怨/home/path不存在。尝试创建名为/home/path的目录或在已存在的目录中选择文件名(例如,找出实际主目录的路径。)您还可以使用相对路径。见
http://en.wikipedia.org/wiki/Path_%28computing%29
对于绝对路径和相对路径之间的差异。