在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”,我仍然会收到该错误!
任何想法?
答案 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)