Ответ 1
Используйте os.makedirs
для создания дерева каталогов.
Если в ./a/b/c
не существует такой путь, как b/c/
, shutil.copy("./blah.txt", "./a/b/c/blah.txt")
будет жаловаться, что адресата не существует. Каков наилучший способ создания и пути назначения и копирования файла на этот путь?
Используйте os.makedirs
для создания дерева каталогов.
Я использую нечто похожее на это, чтобы проверить, существует ли каталог, прежде чем делать что-то с ним.
if not os.path.exists('a/b/c/'):
os.mkdir('a/b/c')
Способ EAFP, избегайте гонок и ненужных системных вызовов:
import errno
import os
import shutil
src = "./blah.txt"
dest = "./a/b/c/blah.txt"
# with open(src, 'w'): pass # create the src file
try:
shutil.copy(src, dest)
except IOError as e:
# ENOENT(2): file does not exist, raised also on missing dest parent dir
if e.errno != errno.ENOENT:
raise
# try creating parent directories
os.makedirs(os.path.dirname(dest))
shutil.copy(src, dest)