解析此目录路径而不会丢失斜杠

时间:2010-05-18 19:04:04

标签: python string wxpython escaping

我有一个wxPython应用程序。我使用GetValue()从文本框中获取目录路径。

我注意到在尝试将此字符串写入变量时:

"C:\Documents and Settings\tchan\Desktop\InputFile.xls"

python将字符串视为

'C:\\Documents and Settings\tchan\\Desktop\\InputFile.xls'(在“设置”和“用户名”之间缺少斜杠。

更多信息:

目录路径字符串由“打开文件”对话框创建,该对话框创建了一个标准的“选择文件”对话框,您可以在文本处理器的任何“打开”功能中看到该对话框。该字符串被写入文本框,稍后在主线程开始时读取(如果用户想要更改它)。

编辑:我意识到问题来自'\ t'被视为“标签”而不是正常的正斜杠。但是,我不知道如何解决这个问题,因为

3 个答案:

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