我的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()
答案 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"'
并且您的代码不会删除引号,它仍然是字符串的一部分。