如果不存在,写模式是否会创建新文件?

时间:2010-06-22 16:15:39

标签: python file-io

我正在尝试使用文件上下文管理器写入尚不存在的文件。

a=open ('C:/c.txt' , 'w')

以上不成功。如果文件已经存在,我将如何创建一个文件?

4 个答案:

答案 0 :(得分:30)

是的,'w'被指定为创建新文件 - 正如the docs所述,

  

'w'用于写入(截断文件   如果已经存在),

(明确推断它不允许存在)。请详细说明确切的追溯,而不仅仅是您自己的摘要,因为细节很重要 - 例如如果您使用的实际路径不同,那么缺少的可能是驱动器或某个中间目录;或者可能存在许可问题。

答案 1 :(得分:4)

[编辑反映问题很可能不会反向斜线]

如果我理解正确,您希望自动为您创建文件,对吗?

在写入模式下打开会为您创建文件。如果你告诉我们你得到的确切错误,那就更清楚了。这可能是因为你没有权限用C写作:。

我之前曾建议可能是因为正斜杠,并表示OP可以尝试:

a = open(r'C:\c.txt', 'w')

请注意文件路径前的 r ,表示原始模式(即反斜杠不会被解释为特殊)。

然而,正如Brian Neal指出的那样(以及其他人,在别处评论),这可能不是错误的原因。我只是出于历史目的将它保存在这里。

答案 2 :(得分:3)

您很可能正在尝试写入不存在的目录或您没有写入权限的目录。

如果你想写信给C:\foo\bar\foobar.txt,那么请确保你有C:\foo\bar\存在(如果权限在Windows上运行,请确保你有权在那里写)。

现在,当您以写入模式打开文件时,应该创建一个文件。

答案 3 :(得分:0)

如果您询问在文件不存在时如何收到警告,则需要明确检查该文件。

请参阅here