我有一个wxPython应用程序。我使用GetValue()从文本框中获取目录路径。
我注意到在尝试将此字符串写入变量时:
"C:\Documents and Settings\tchan\Desktop\InputFile.xls"
,
python将字符串视为
'C:\\Documents and Settings\tchan\\Desktop\\InputFile.xls'
(在“设置”和“用户名”之间缺少斜杠。
更多信息:
目录路径字符串由“打开文件”对话框创建,该对话框创建了一个标准的“选择文件”对话框,您可以在文本处理器的任何“打开”功能中看到该对话框。该字符串被写入文本框,稍后在主线程开始时读取(如果用户想要更改它)。
编辑:我意识到问题来自'\ t'被视为“标签”而不是正常的正斜杠。但是,我不知道如何解决这个问题,因为
答案 0 :(得分:4)
我怀疑有一种不同的方法可以从wx那里获得那条可以避免这个问题的路径,因为这似乎是一个相当常见的问题。也就是说,通过将您拥有的字符串转换为原始字符串,有几种方法可以修复您描述的错位路径。
rawpath = "%r" % path
由此产生的原始路径可能会有些混乱,因为它可能会为反斜杠添加额外的转义,并为您提供如下内容:
"'C:\\\\Documents and Settings\\tchan\\\\Desktop\\\\InputFile.xls'"
似乎os.path.normpath会清理它。
import os.path
os.path.normpath(rawpath)
答案 1 :(得分:2)
不是说这是正确的解决方案,但你可以
x = "C:\tmp".encode('string-escape')
x
'C:\\tmp'
更好,如果您使用的是文件对话框
os.path.join(dlg.GetDirectory(),dlg.GetFilename())
其中dlg是你的对话
答案 2 :(得分:0)
你必须逃避斜线。 \\
会在字符串中存储文字\
:
path = "C:\\Documents and Settings\\tchan\\Desktop\\InputFile.xls"