Python os.path.join в Windows

Я пытаюсь изучить 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 не может использоваться этот путь, затем я смущен относительно его цели.

Согласно страницам, предложенным Переполнением стека, наклонные черты не должны использоваться в соединении — который корректен, я принимаю?

83
задан Frank E. 11 March 2010 в 05:51
поделиться

3 ответа

В Windows есть концепция текущего каталога для каждого диска. По этой причине «c: sourcedir» означает «sourcedir» внутри текущего каталога C :, и вам нужно указать абсолютный каталог.

Любой из них должен работать и давать тот же результат, но в данный момент у меня нет виртуальной машины Windows, запущенной для двойной проверки:

"c:/sourcedir"
os.path.join("/", "c:", "sourcedir")
os.path.join("c:/", "sourcedir")
50
ответ дан 24 November 2019 в 08:47
поделиться

чтобы присоединиться к пути Windows, попробуйте

mypath=os.path.join('c:\\', 'sourcedir')

в основном, вам нужно будет экранировать косую черту

3
ответ дан 24 November 2019 в 08:47
поделиться

Причина os.path.join ('C:', 'src') не работает должным образом из-за что-то в документации, на которую вы ссылались:

Обратите внимание, что в Windows, поскольку для каждого диска есть текущий каталог, os.path.join ("c:", "foo ") представляет собой путь относительно текущего каталога на диске C: (c: foo), а не c: \ foo.

Как сказал призрак, вам, вероятно, понадобится mypath = os.path.join ('c: \\', 'sourcedir')

11
ответ дан 24 November 2019 в 08:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: