Відповіді:
Ви завжди можете використовувати:
'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\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
команда.
Якщо ви використовуєте командний рядок 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'
Потім просто скопіюйте результат