2010-06-22 54 views
22

我正在尝试使用文件上下文管理器写入一个尚不存在的文件。确实写模式创建一个新文件,如果不存在?

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

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

+0

没有repro,对我来说工作得很好 – SilentGhost 2010-06-22 16:18:58

+0

请添加到您的问题:什么版本的Python,您正在运行的平台(Windows?)和确切的错误消息。 – 2010-06-22 16:20:27

+1

如果文件不存在,“w”模式应该会自动创建该文件 - 请问您可以编辑您的问题以包含您正在运行的特定命令/代码以及错误消息和回溯结果?谢谢。 – nearlymonolith 2010-06-22 16:21:15

回答

0

如果您在文件不存在时要求如何警告,那么您需要明确检查。

here

27

是,'w'被指定为创建一个新的文件 - 如the docs所说的那样,

'W' 写(截断文件 如果它已经存在),

(明确推断它允许不存在)。细节问题 - 例如,请显示确切的回溯,而不仅仅是您自己的总结。如果您使用的实际路径不同,缺少的可能是驱动器或某个中间目录;或者可能有权限问题。

+7

请注意,它不会创建目录,如果这些不存在,但。 – 2016-06-06 01:28:44

3

[编辑,以反映该问题很可能不转发与反斜线]

如果我理解正确的,你想为你自动创建的文件,对不对?

在写模式下打开确实会为您创建文件。如果你告诉我们你得到的确切错误,这将更加清楚。这可能是像你没有权限写C :.

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

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

注意[R文件路径前,表示原始模式(即是,反斜杠不会被解释为特殊的)。然而,正如Brian Neal指出的(以及其他人在其他地方发表评论),这可能不是导致错误的原因。我只是为了历史目的而将它保留在这里。

+0

这不是正斜杠。他的代码片段在Windows上适合我。 – 2010-06-22 16:55:14

+0

这件事发生在我稍后。我仍然在等待OP给我们提供错误,但我会在此期间编辑我的答案。谢谢:) – rbp 2010-06-22 17:43:01

3

您可能正试图写入一个不存在的目录或者您没有写入权限的目录。

如果你想写C:\foo\bar\foobar.txt然后确保你有一个C:\foo\bar\存在(如果权限在Windows上工作,请确保你有权限在那里写)。

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

+0

我敢打赌,这是一个权限问题。 Vista和Windows 7的默认设置不允许普通用户在根目录中写入文件。 – 2010-06-22 18:02:19

相关问题