Відповіді:
Ви завжди можете використовувати:
'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 літерали позначають початок послідовності відходу. На вашому шляху у вас є дійсна послідовність втечі з двох символів \a, яка згортається на один символ, який є ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Інші поширені послідовності відходу включають \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']
Як бачимо, у всіх цих прикладах зворотна косої риски та наступний символ у літералі були згруповані разом, щоб утворити єдиний символ у заключному рядку. Повний список послідовностей втечі Python тут .
Існує безліч способів вирішити це:
Python не буде обробляти послідовності втечі в рядкових літералах з префіксом rабоR :
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\asPython в 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команда.
Якщо ви використовуєте командний рядок 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'
Потім просто скопіюйте результат