2016-07-06 43 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()

相關問題