2013-09-28 2 views
11

Я столкнулся с очень простой проблемой, используя путь к каталогу в скрипте python. Когда я копирую путь из проводника Windows, он использует обратную косую черту в качестве разделителя путей, которая вызывает проблему.Python windows path slash

>>> x 
'D:\testfolder' 
>>> print x 
D:  estfolder 
>>> print os.path.normpath(x) 
D:  estfolder 
>>> print os.path.abspath(x) 
D:\  estfolder 
>>> print x.replace('\\','/') 
D:  estfolder 

Может кто-нибудь, пожалуйста, помогите мне исправить это.

+0

Короткие косые черты понимаются во всех ОС, но «normpath» на окнах использует '\\'. Я лично считаю, что проще использовать методы «путь» для объединения/управления путями, а затем, наконец, выполнить замену от '\\' на '/', чтобы они были согласованными между системами. Не уверен, что это ответит на ваш вопрос? – Basic

+4

вы можете добавить r перед этой строкой, например x = r'D: \ testfolder ', а x будет «D: \ testfolder». добавление «r» перед строкой показывает, что эта строка является необработанной. – Mark

ответ

12

Python интерпретирует \t в строке как символ табуляции; следовательно, "D:\testfolder" будет распечатываться с вкладкой между : и e, как вы заметили. Если вы хотите реальный обратный слэш, вам нужно побеге символ обратной косой черты, введя ее как \\:

>>> x = "D:\\testfolder" 
>>> print x 
D:\testfolder 

Однако для кросс-платформенной совместимости, вы, вероятно, следует использовать os.path.join. Я думаю, что Python в Windows автоматически обрабатывает косые черты (/).

+7

Простое использование косых черт будет работать под окнами - 'os.path.join()', очевидно, является самым сильным решением. –

+9

В качестве альтернативы вы можете использовать [сырой строковый литерал] (http://docs.python.org/2/reference/lexical_analysis.html#string-literals) путем префикса 'r', так что escape-последовательности не интерпретируются, например. 'Г "D: \ testfolder"'. –

+2

@AdamRosenfield Необработанные строки не подходят для оконного пути. https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/ –