能够打开无法控制的路径

时间:2014-04-06 10:16:34

标签: python path

我的python代码有问题:我想要做的是让用户输入文件的路径,然后打开并处理 这里的问题是我无法控制用户可以输入的内容,例如路径为:"C:\0_dir\test\file.txt"我无法打开文件,当我尝试打印给定路径时,我得到: "C: _dir est ile.txt"所以即使我尝试:my_path.replace ("\ \", "/")它也不起作用..我知道斜线是问题的原因但是我不知道如何解决这个问题,特别是因为我无法控制给定的路径 如果有人已经遇到这个问题,或者有人有任何想法,我会很感激 谢谢

修改

感谢您的回答..我没有使用输入来获取路径实际上这有点复杂:这就是我的代码:

command=' test.exe -o"a/b/c/f.txt" -i"C:\0_dir\test\file.txt" -f"x/y/z"'
pathToFile=[x for x in command.split() if x.startswith("-i")]
my_path=pathToFile[0].replace("-i","")
mfile=open(my_path,"r")
contenu=mfile.readlines()

1 个答案:

答案 0 :(得分:1)

我强烈怀疑您在Python 2中使用input()函数来询问用户路径输入。如果是这样,您确实想要使用raw_input()

input()尝试将给定的用户文本解释为Python表达式,此时用户必须在路径周围使用引号,并使用 forward 斜杠(这也适用于Windows),原始字符串文字(r"C:\0_dir\test\file.txt")或双斜线,否则反斜杠可以解释为转义序列的开始; \0被解释为八进制字节值,\t是一个标签,\f是一个换页控制代码。

使用raw_input()您不会遇到任何问题:

>>> input('Give a path: ')
Give a path: "C:\0_dir\test\file.txt"
'C:\x00_dir\test\x0cile.txt'
>>> raw_input('Give a path: ')
Give a path: C:\0_dir\test\file.txt
'C:\\0_dir\\test\\file.txt'

其中Python将结果值作为有效的Python字符串文字返回,使用转义序列表示非可打印字符(例如空字节和制表符),并将斜杠加倍以转义它们。字符串的实际有单斜杠:

>>> print 'C:\\0_dir\\test\\file.txt'
C:\0_dir\test\file.txt

您发布的代码应该使用加倍的反斜杠:

command = 'test.exe -o"a/b/c/f.txt" -i"C:\\0_dir\\test\\file.txt" -f"x/y/z"'

并且您的代码不会删除引号,它仍然是字符串的一部分。