8

在 Iron Python 中执行 chdir 命令时出现“路径中的非法字符”错误。这是在我的代码运行时发生的,但即使在 Iron Python 控制台中也存在此问题。我正在使用 nt 模块,因为在代码中 os 模块不起作用(似乎是一个已知问题)。

稍微玩了一下,结果发现“非法字符”实际上是bin这个词。下面是来自控制台的文本,显示我只有在导航到 bin 目录时才会收到错误。

这是示例

>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx')
>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx\Directory')
>>> nt.chdir('c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx\Directory\bin')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Illegal characters in path.

更糟糕的是,我将导航到一个完全不同的目录(甚至没有 bin 目录)并尝试导航到子目录“bin”,但我仍然会收到该错误!

有任何想法吗?

4

3 回答 3

15

\路径分隔符也是一个 python 转义字符。将它们加倍,或者更好的是,使用r''原始 python 文字代替:

r'c:\Users\xxxxx\Documents\Visual Studio 2010\Projects\xxx'
'c:\\Users\\xxxxx\\Documents\\Visual Studio 2010\\Projects\\xxx'

例如,\n是换行符,并被\t解释为 TAB。在您的具体情况下,\b被解释为退格键。

于 2012-09-11T13:59:00.163 回答
6

\是 Python 字符串中的转义字符。\b是退格,这就是为什么它会显示\bin:您没有指定目录Directory\bin,您正在指定目录Directory<backspace>in,这不是合法路径,即使是,也不存在。

您可以通过加倍反斜杠或使用rMartijn 建议的指示符来编写字符串。第三种选择是像在所有其他文明操作系统中一样简单地使用正斜杠。Windows 非常乐意使用这些。

于 2012-09-11T14:04:47.260 回答
1

Windows 和大多数其他操作系统将识别正斜杠。因此,您可以使用正斜杠,而不是反斜杠、双反斜杠或 r' '(更多关于字符串文字的内容) 。这里的答案也很详细。

更新: PS:谨慎使用反斜杠和字符串文字。始终检查您的具体情况。在这个答案中有一个很好的评论

于 2013-08-06T19:20:10.143 回答