Я пытаюсь изучить Python и делаю программу, которая произведет сценарий. Я хочу использовать os.path.join, но довольно перепутан. Согласно документам, если я говорю:
os.path.join('c:', 'sourcedir')
Я добираюсь "C:sourcedir"
. Согласно документам, это нормально, правильно?
Но когда я использую команду copytree, Python произведет ее желаемый путь, например:
import shutil
src = os.path.join('c:', 'src')
dst = os.path.join('c:', 'dst')
shutil.copytree(src, dst)
Вот код ошибки, который я получаю:
WindowsError: [Error 3] The system cannot find the path specified: 'C:src/*.*'
Если я переношусь os.path.join
с os.path.normpath
Я получаю ту же ошибку.
Если это os.path.join
не может использоваться этот путь, затем я смущен относительно его цели.
Согласно страницам, предложенным Переполнением стека, наклонные черты не должны использоваться в соединении — который корректен, я принимаю?
В Windows есть концепция текущего каталога для каждого диска. По этой причине «c: sourcedir»
означает «sourcedir» внутри текущего каталога C :, и вам нужно указать абсолютный каталог.
Любой из них должен работать и давать тот же результат, но в данный момент у меня нет виртуальной машины Windows, запущенной для двойной проверки:
"c:/sourcedir"
os.path.join("/", "c:", "sourcedir")
os.path.join("c:/", "sourcedir")
чтобы присоединиться к пути Windows, попробуйте
mypath=os.path.join('c:\\', 'sourcedir')
в основном, вам нужно будет экранировать косую черту
Причина os.path.join ('C:', 'src')
не работает должным образом из-за что-то в документации, на которую вы ссылались:
Обратите внимание, что в Windows, поскольку для каждого диска есть текущий каталог, os.path.join ("c:", "foo ") представляет собой путь относительно текущего каталога на диске C: (c: foo), а не c: \ foo.
Как сказал призрак, вам, вероятно, понадобится mypath = os.path.join ('c: \\', 'sourcedir')