Ответы:
Вы можете использовать всегда:
'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, таких как lscommand.
Если вы используете командную строку 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'
Тогда просто скопируйте результат