Python 如果不存在则不创建文件
Python doesn't create file if not existing
我不知道如何创建不存在的文件。我尝试了以下操作,但我收到文件不存在的错误消息。
请指导。
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')
使用双反斜杠:
f=open('c:\Lets_Create_Malware\output.txt', 'w+')
来自docs:
The backslash (\
) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character.
鉴于您指定的确切路径,至少您的一些示例应该有效(除非 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()
。
我不知道如何创建不存在的文件。我尝试了以下操作,但我收到文件不存在的错误消息。
请指导。
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')
使用双反斜杠:
f=open('c:\Lets_Create_Malware\output.txt', 'w+')
来自docs:
The backslash (
\
) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character.
鉴于您指定的确切路径,至少您的一些示例应该有效(除非 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()
。