Ответы:
Вы можете использовать всегда:
'C:/mydir'
это работает как в Linux и Windows. Другая возможность
'C:\\mydir'
если у вас есть проблемы с некоторыми именами, вы можете также использовать необработанные строковые литералы:
r'C:\mydir'
Однако рекомендуется использовать os.path
функции модуля, которые всегда выбирают правильную конфигурацию для вашей ОС:
os.path.join(mydir, myfile)
В Python 3.4 вы также можете использовать модуль pathlib . Это эквивалентно вышесказанному:
pathlib.Path(mydir, myfile)
или
pathlib.Path(mydir) / myfile
Используйте os.path
модуль.
os.path.join( "C:", "meshes", "as" )
Или используйте сырые строки
r"C:\meshes\as"
Я также рекомендовал бы не пробелы в пути или именах файлов. И вы можете использовать двойную обратную косую черту в своих строках.
"C:\\meshes\\as.jpg"
"C:\"
качестве первой записи? Это испортило некоторую чистоту использования join
?
"C:\"
в середине имени файла. Кроме того, вы можете использовать os.path.normpath
до или после объединения, чтобы убедиться, что путь печатается правильно.
os.path.join( "C:\\", "meshes", "as" )
Да, \
в Python строковые литералы обозначают начало escape-последовательности. На вашем пути у вас есть действительная двухсимвольная escape-последовательность \a
, которая свернута в один символ ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Другие распространенные escape-последовательности включают \t
(табуляция), \n
(перевод строки), \r
(возврат каретки):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Как вы можете видеть, во всех этих примерах обратная косая черта и следующий символ в литерале были сгруппированы вместе, чтобы сформировать один символ в конечной строке. Полный список escape-последовательностей Python находится здесь .
Есть множество способов справиться с этим:
Python не будет обрабатывать escape-последовательности в строковых литералах с префиксом r
илиR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python в Windows также должен обрабатывать косые черты.
Вы могли бы использовать os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... или более новый pathlib
модуль
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
В Windows вы можете использовать /
свой путь точно так же, как Linux или macOS во всех местах, если вы используете PowerShell в качестве интерфейса командной строки. Он предустановлен в Windows и поддерживает множество команд Linux, таких как ls
command.
Если вы используете командную строку Windows (ту, которая появляется при вводе cmd
в меню «Пуск» Windows), вам необходимо указать пути \
внутри нее. Вы можете использовать /
пути во всех других местах (редактор кода, интерактивный режим Python и т. Д.).
Если вы хотите вставить путь к Windows из другого источника (например, File Explorer) - вы можете сделать это с помощью input()
вызова в консоли Python:
>>> input()
D:\EP\stuff\1111\this_is_a_long_path\you_dont_want\to_type\or_edit_by_hand
'D:\\EP\\stuff\\1111\\this_is_a_long_path\\you_dont_want\\to_type\\or_edit_by_hand'
Тогда просто скопируйте результат