当使用bin这个词时,Python(IronPython)为什么要报告“路径中的非法字符”?

2024-06-13 20:03:06 发布

您现在位置:Python中文网/ 问答频道 /正文

在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”,我仍然会得到这个错误!

有什么想法吗?


Tags: 模块目录bin错误字符usersdocumentsxxx
3条回答

Windows和大多数其他操作系统将识别正斜杠。所以,不用反斜杠、双反斜杠或r'(更多关于字符串文本here)只需使用正斜杠,就可以了。答案here也很详细。

更新:PS:小心使用反斜杠和字符串文字。一定要检查你的具体情况。在这篇answer中对此有很好的评论

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

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

路径分隔符也是python转义符。将它们加倍,或者更好的方法是,改用r''原始python文本:

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

例如,\n是换行符,而\t被解释为制表符。在您的特定情况下,\b被解释为退格。

相关问题 更多 >