2016-07-06 113 views
0

我无法弄清楚如何创建不存在的文件。我尝试了下,但我得到错误,该文件不存在。如果不存在,Python不会创建文件

请指导。

f=open('c:\Lets_Create_Malware\output.txt', 'r+') 

f=open('c:\Lets_Create_Malware\output.txt', 'w+') 

f=open('c:\Lets_Create_Malware\output.txt', 'a+') 

f=open('c:\Lets_Create_Malware\output.txt', 'r') 

f=open('c:\Lets_Create_Malware\output.txt', 'w') 

f=open('c:\Lets_Create_Malware\output.txt', 'a') 
+0

[Open in Python does not create a file if not exist](http://stackoverflow.com/questions/2967194/open-in-python-does-not-create-a-file)如果它不存在) – paisanco

+0

http://stackoverflow.com/questions/16333569/mixed-slashes-with-os-path-join-on-windows – dmitryro

回答

1

使用双反斜线:

f=open('c:\\Lets_Create_Malware\\output.txt', 'w+') 

docs

反斜线(\)字符用来逃跑,否则有特殊含义的字符,如换行符,反斜杠本身或引号字符。

1

鉴于你specificed,至少你的一些实例的确切路径应该有工作(除非c:\Lets_Create_Malware路径不存在,这将借由使所有的测试用例失败增加混乱)。

反斜杠来这里不是给你的例子,因为要修改的字符的问题并不特别:

f=open('c:\Lets_Create_Malware\output.txt', 'w')

作品,因为\ L和\ o不要有特殊的含义,因此使用字面上(和'W'和'A'标志将创建该文件,如果它不存在)。

然而,另一个路径:

f=open('c:\Lets_Create_Malware\badname.txt', 'w')

将失败:

IOError: [Errno 22] invalid mode ('w') or filename: 'c:\\Lets_Create_Malware\x08adname.txt'

因为该文件名的\b部分被转换为钟形字符(CTRL-B或\ X08 )。

有两种方法来避免此问题:要么先与r原始字符串修饰符的字符串(例如,r'foo\bar')或确保每个反斜杠转义(\\)。为此,最好使用os.path模块中的os.path.join()

相关问题