1

我正在尝试在一个空文件夹中创建一个新的文本文件。该文件夹的路径是:

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'

谁能告诉我我做错了什么,或者这里发生了什么?

4

3 回答 3

3

\需要在字符串中转义。这就是\\使用原始字符串的原因 ( 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')
于 2013-08-08T12:47:31.827 回答
2

这是正常行为;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 上作为路径分隔符可以正常工作,并且它们不可能被解释为转义字符。

于 2013-08-08T12:47:40.630 回答
1

在普通的 Python 字符串中,反斜杠可以有特殊的含义(例如,\n表示换行)。在您在代码中提供的路径中,您要么需要使用\\每个目录分隔符(\\意味着包含 a),要么将字符串标记为原始字符串,这意味着对反斜杠的特殊处理不适用。您可以在引号前使用 r 来执行此操作,例如r'Folder\Sub-Folder\Another'

错误消息基本上是 python 为您提供可用于获取原始字符串的 python 代码。

于 2013-08-08T12:52:27.037 回答