2009-12-26 2 views
0

Я пытаюсь работать с некоторыми длинными файловыми путями (Windows) в Python и сталкивался с некоторыми проблемами. После прочтения вопроса here, мне кажется, что мне нужно добавить «\\? \» В начало моих длинных путей к файлу, чтобы использовать их с os.stat (путь к файлу). Проблема, с которой я сталкиваюсь, заключается в том, что я не могу создать строку в Python, которая заканчивается обратным слэшем. Вопрос here указывает, что вы даже не можете кончить строки в Python одним символом '\'.Как добавить '\? ' В начало пути файла в Python

Есть ли что-нибудь в любой из стандартных библиотек Python или где-либо еще, что позволяет просто добавить «\\? \» К началу пути к файлу, который у вас уже есть? Или есть ли другая работа для работы с длинными файловыми путями в Windows с Python? Похоже, такая простая вещь, но я не могу понять, что это за жизнь.

+0

«Приложить к фронту» - это запутанная фраза. Вы могли бы означать «preend». –

ответ

3

«\\\\? \\» должен предоставить вам именно нужную вам строку.

Более длинный ответ: конечно, вы можете закончить строку в Python с обратной косой чертой. Вы просто не можете этого сделать, когда это «сырая» строка (одна с префиксом «r»). Что вы обычно используете для строк, которые содержат (много) слэш (чтобы избежать печально известного «наклоняясь зубочисткой» синдром ;-))

+0

Необработанные строковые литералы должны избегать escape-последовательностей ('\" ',' \ n', '\ (', '\ s' и т. Д.), Поэтому вы не можете закончить один в обратном слэше. – 2009-12-26 14:30:34

+0

Yep , это работает. Я пробовал это раньше и получил ошибку, хотя это оказалось потому, что я делал это с файловым путем, как «\\? \ D: somefile» вместо «\\? \ D: \ некий-файл». –

0

Даже с сырой строкой, вы можете закончить в обратном косой черте с:

>>> print r'\\?\D:\Blah' + '\\' 
\\?\D:\Blah\ 

или даже:

>>> print r'\\?\D:\Blah' '\\' 
\\?\D:\Blah\ 

так сцепляются Python для текстовых строк в одну.

Смежные вопросы