在解析此目录路径时保留斜杠

1 投票
3 回答
1673 浏览
提问于 2025-04-15 22:51

我有一个使用wxPython制作的应用程序。我通过一个文本框获取一个目录路径,使用的是GetValue()这个方法。

我注意到,当我试图把这个字符串写入一个变量时:

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

Python把这个字符串识别成了

'C:\\Documents and Settings\tchan\\Desktop\\InputFile.xls'(在“Settings”和“UserName”之间缺少一个斜杠)。

更多信息:

这个目录路径字符串是通过“打开文件”对话框创建的,这个对话框就是你在任何文本处理软件的“打开”功能中看到的标准“选择文件”对话框。这个字符串会被写入一个文本框,之后在主线程开始时读取(以防用户想要更改它)。

编辑:我意识到问题出在'\t'被识别为“制表符”,而不是正常的斜杠。不过我不知道该如何解决这个问题,因为

3 个回答

0

你需要对斜杠进行转义。使用 \\ 可以在字符串中存储一个实际的 \

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

我不是说这是正确的解决办法,但你可以这样做:

x = "C:\tmp".encode('string-escape')
x
'C:\\tmp'

如果你使用文件对话框的话,这样会更好:

os.path.join(dlg.GetDirectory(),dlg.GetFilename())

这里的 dlg 是你对话框的名字。

4

我觉得从wx获取路径的方法可能还有其他选择,这样可以避免你提到的问题,因为这似乎是一个比较常见的情况。不过,针对你描述的这种路径混乱的情况,有几种方法可以解决,可以通过把你现有的字符串转换成原始字符串来实现。

rawpath = "%r" % path

转换后的原始路径可能会有点乱,因为它可能会在反斜杠前加上额外的转义符,结果可能会变成这样:

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

不过,os.path.normpath这个函数似乎可以帮你整理一下。

import os.path
os.path.normpath(rawpath)

撰写回答