разобрать этот путь к каталогу без потери слеша - PullRequest
1 голос
/ 18 мая 2010

У меня есть приложение wxPython. Я беру в каталоге путь из текстового поля с помощью GetValue ().

Я заметил, что при попытке записать эту строку в переменную:

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

питон видит строку как

'C:\\Documents and Settings\tchan\\Desktop\\InputFile.xls' (отсутствует косая черта между «Настройки» и «Имя пользователя»).

Дополнительная информация:

Строка пути к каталогу создается диалогом «открыть файл», который создает стандартный диалог «выбрать файл», который вы видите в любой функции «открыть» в текстовом процессоре. Строка записывается в текстовое поле и читается позже, когда начинается основной поток (в случае, если пользователь хочет изменить его).

РЕДАКТИРОВАТЬ : Я понимаю, что проблема заключается в том, что '\ t' рассматривается как «вкладка» вместо обычного слеша. Однако я не знаю, как работать с этим, так как

Ответы [ 3 ]

4 голосов
/ 19 мая 2010

Я подозреваю, что есть другой способ получить этот путь от wx, чтобы избежать этой проблемы, поскольку кажется, что это будет довольно распространенной проблемой. Тем не менее, есть несколько способов исправить искаженный путь, как вы описали, преобразовав полученную строку в необработанную строку.

rawpath = "%r" % path

Результирующий rawpath, вероятно, будет несколько беспорядочным, поскольку он, вероятно, добавит дополнительные экранированные символы к обратным слешам и даст вам что-то вроде:

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

Похоже, что os.path.normpath это очистит.

import os.path
os.path.normpath(rawpath)
2 голосов
/ 19 мая 2010

не говорю, что это правильное решение, но вы можете

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

лучше, если вы используете диалоговое окно файла

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

где dlg - это ваш диалог

0 голосов
/ 19 мая 2010

Вы должны избежать косых черт. \\ будет хранить литерал \ в строке:

path = "C:\\Documents and Settings\\tchan\\Desktop\\InputFile.xls"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...