Как исправить проблему с shutil.copy?

Я получаю сообщение об ошибке "IOError: [Errno 2] Нет такого файла или каталога:" C:\Temp\test2_empty\Storage\Poly1.kml ""

Я хочу скопировать файл из каталога, переместить его во временную папку хранения и переименовать файл, а затем переместить этот файл в другую папку. Каков наилучший способ исправить эту проблему?

from qgis.core import*
import glob, os, shutil, time, qgis

path = r"C:\Temp\test2_kml"
dest = r"C:\Temp\test2_empty"
storage = r"C:\Temp\test2_empty\Storage"


for root,d_names,f_names in os.walk(path):
    if not f_names:
        continue
    prefix = os.path.basename(root)
    for f in f_names:
        if f.endswith('.kml'):
            src = os.path.join(root,f)
            print("...")
            print(time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(src))))
            print(os.path.realpath(src))
            print(f)
            shutil.copy2(src, storage)
            for root2,d_names2,f_names2 in os.walk(storage):
                for f2 in f_names2:
                    src2= os.path.join(root2,f2)
                    os.rename(os.path.join(root2,f2), os.path.join(root2, "{}_{}".format(prefix,f2)))
                    shutil.move(src2, dest)

1 ответ

Создайте каталог назначения - os.makedirs(storage) перед вызовом шутил копия.

Если вы хотите принять предварительное существование этого каталога, вы можете:

  • для python 3.2+ - добавить аргумент ключевого слова exist_ok=True
  • для python <3.2 - добавить блок try / исключением для исключения OSError.
Другие вопросы по тегам