清理用户输入路径名称

时间:2013-05-13 21:36:03

标签: python escaping input-sanitization

在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

更好的方法是什么?

1 个答案:

答案 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'

从这个示例中可以看出用户输入确实是转义