为什么Python(IronPython)在使用单词bi​​n时会报告“路径中的非法字符”?

时间:2012-09-11 13:57:23

标签: python ironpython illegal-characters

在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”,我仍然会收到该错误!

任何想法?

3 个答案:

答案 0 :(得分:14)

\路径分隔符也是一个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被解释为退格。

答案 1 :(得分:5)

\是Python字符串中的转义字符。 \b是退格键,这就是\bin上barfs的原因:您没有指定目录Directory\bin,而是指定目录Directory<backspace>in,这不是合法路径,即使它存在,也不存在。

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

答案 2 :(得分:1)

Windows和大多数其他操作系统都会识别正斜杠。所以,而不是反斜杠,双反斜杠或r''(更多关于字符串文字here),你可以使用正斜杠,你很高兴。答案here也很详细。

更新:PS:谨慎使用反斜杠和字符串文字。始终检查您的具体情况。在answer

中有一个很好的评论