Найти - Пользователи
Полная версия: Проблема с копированием директории
Начало » Python для новичков » Проблема с копированием директории
1
Suliman
Уже час втыкаю в документацию и не могу понять, что я делаю не так.
Мне нужно в директорию D:\savorsk\ скопировать folder1. Вроде бы очень банально, НО у меня вылетает ошибка

import shutil
src = "D:\\Project\\2014\\archdata\\folder1"
dst_sav = "D:\\savorsk\\"
shutil.copytree(src, dst_sav)

D:\123>1.py
Traceback (most recent call last):
File "D:\123\1.py", line 5, in <module>
shutil.copytree(src, dst_sav)
File "C:\Python27\ArcGIS10.2\lib\shutil.py", line 175, in copytree
os.makedirs(dst)
File "C:\Python27\ArcGIS10.2\lib\os.py", line 157, in makedirs
mkdir(name, mode)
WindowsError: [Error 183] ═хтючьюцэю ёючфрЄ№ Їрщы,: 'D:\\savorsk'

Мне предлагают создать каталог D:\\savorsk\\folder1 только я реально не понимаю зачем, если мне нужно в него folder1 как раз поместить, а не в пути его создавать.
Объясните пожалуйста в чем я ошибаюсь.

В документации написано “The destination directory, named by dst, must not already exist;”. Но если она не будет сущестовать, то как мне в нее что-то скопировать то?
valentjedi
Suliman
На Python 3.3 работает нормально. На 2.7 тоже. Если что, обязательно должна существовать src директория. И должны быть права на папки
MindHatter
Все правильно. Директории назначения не должно существовать, поскольку модуль os не сможет заменить существующие файлы. От же (модуль os) и создаст необходимую директорию.
Suliman
MindHatter
и как быть? Мне нужно чтобы просто копировать нужную папку.
MindHatter
Тут все просто. Удали директорию назначения, то есть ‘D:\\savorsk’.

В первый раз скрипт отработает нормально, но если ты запустишь его второй раз то возникнет та же самая ошибка. Если переводить на русский ту белиберду в трейсбеке, то это будет:

Traceback (most recent call last):
  File "\\psf\Home\Documents\copy_folder.py", line 4, in <module>
    shutil.copytree(src, dst_sav)
  File "C:\Python27\lib\shutil.py", line 177, in copytree
    os.makedirs(dst)
  File "C:\Python27\lib\os.py", line 157, in makedirs
    mkdir(name, mode)
WindowsError: [Error 183] Невозможно создать файл,: 'C:\\savorsk\\'

И все потому что директория уже существует.

Чтобы не заострять внимание, существует папка или нет, воспользуйся обработкой исключений:

import shutil
src = "D:\\Project\\2014\\archdata\\folder1"
dst_sav = "D:\\savorsk\\"
try:
    shutil.copytree(src, dst_sav)
except WindowsError:
    shutil.rmtree(dst_sav)
    shutil.copytree(src, dst_sav)

Надеюсь смысл ясен
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB