在Windows上使用Python 2.6我有一个需要接受路径名作为arg的函数。当某些特定路径通过时,我遇到了问题。
C:\users\bob\something.png #this is handled no prob.
C:\users\bob\nothing.png #this generates a WindowsError
C:\users\bob\test.png #this also generates a WindowsError
我收集的是{"没有"}中的\n
。路径被解释为一个新行,并且"测试中的\t
"路径被解释为选项卡。
如果我打印出路径名称,那就是正在发生的事情。
print os.path.abspath("C:\users\bob\nothing.png")
C:\users\bob
othing.png
同样的测试'路径,除了标签而不是新行。
我到目前为止唯一能做的就是检查路径名中是否有\n
或\t
,然后相应处理,但必须确实是一种更好的方式。
if '\n' in path_name:
#escape slash, move on
更好的方法是什么?
答案 0 :(得分:4)
print os.path.abspath(r"C:\users\bob\nothing.png")
可能是你想要的......
虽然用户输入应该自动转出斜杠...
>>> a = raw_input("Enter Path:")
Enter Path:C:\www\a\nothing.jpg
>>> a
'C:\\www\\a\\nothing.jpg'
从这个示例中可以看出用户输入确实是转义