我正在尝试在空文件夹中创建一个新的文本文件。该文件夹的路径是:
C:\Users\Tor\Desktop\Python files\retning
当我在Windows资源管理器的命令行中键入它时,我直接进入空文件夹。
当我在Python中输入我的代码时,我得到一个错误消息,看起来Python已经用'\'
取代了几个'\\'
这是我的代码
sector='A5'
g=open('C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')
这是错误消息
Traceback (most recent call last):
File "C:\Users\Tor\Desktop\Python files\filer som behandler output\Vindretning.py", line 2, in <module>
g=open('C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')
IOError: [Errno 22] invalid mode ('a') or filename: 'C:\\Users\\Tor\\Desktop\\Python files\retning\retningA5.txt'
有谁能告诉我我做错了什么,或者这里发生了什么?
答案 0 :(得分:2)
\
需要在字符串中进行转义。这就是使用\\
或原始字符串(r'test String'
)
使用原始字符串解决了这里的问题。像,
open(r'C:\Programming Test Folder\test_file.py')
因此,您的代码变为
g=open(r'C:\Users\Tor\Desktop\Python files\retning\retning{}.txt'.format(sector), 'a')
或在Windows中使用/
,如下所示
g=open('C:/Users/Tor/Desktop/Python files/retning/retning'+sector+'.txt', 'a')
答案 1 :(得分:1)
这是正常的行为; Python为您提供了一个字符串表示形式,可以将其粘贴回Python脚本或解释器提示符。由于\
是Python字符串文字中用于启动转义序列的字符(例如\n
或\xa0
),因此反斜杠加倍。
事实上,没有转义反斜杠的字符是关键所在; \r
是回车的转义码。您需要使用以下选项之一来指定Windows路径:
通过在字符串文字中加倍来逃避所有反斜杠:
g = open('C:\\Users\\Tor\\Desktop\\Python files\\retning\\retning'+sector+'.txt', 'a')
现在\r
不会被解释为转义码。
使用原始字符串文字:
g = open(r'C:\Users\Tor\Desktop\Python files\retning\retning'+sector+'.txt', 'a')
在原始字符串文字中,大多数转义码都会被忽略。
使用转发斜杠:
g = open('C:/Users/Tor/Desktop/Python files/retning/retning'+sector+'.txt', 'a')
正斜杠在Windows上作为路径分隔符正常工作,并且它们不可能被解释为转义字符。
答案 2 :(得分:0)
在普通的python字符串中,反斜杠可以有特殊含义(例如,\n
表示新行)。在您在代码中提供的路径中,您需要对每个目录分隔符使用\\
(\\
表示包含a),或将字符串标记为原始字符串,这意味着特殊处理反斜杠不适用。您可以使用引号前面的r来执行此操作,例如r'Folder\Sub-Folder\Another'
错误消息基本上是python,它为您提供了可用于获取原始字符串的python代码。