Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2014 16:17:34

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с копированием директории

Уже час втыкаю в документацию и не могу понять, что я делаю не так.
Мне нужно в директорию 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;”. Но если она не будет сущестовать, то как мне в нее что-то скопировать то?

Отредактировано Suliman (Май 15, 2014 16:21:01)

Офлайн

#2 Май 15, 2014 17:27:27

valentjedi
Зарегистрирован: 2014-03-06
Сообщения: 26
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с копированием директории

Suliman
На Python 3.3 работает нормально. На 2.7 тоже. Если что, обязательно должна существовать src директория. И должны быть права на папки



#!/usr/bin/env python
# -*- coding: utf-8 -*-

Офлайн

#3 Май 15, 2014 17:29:13

MindHatter
Зарегистрирован: 2014-05-09
Сообщения: 20
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с копированием директории

Все правильно. Директории назначения не должно существовать, поскольку модуль os не сможет заменить существующие файлы. От же (модуль os) и создаст необходимую директорию.

Офлайн

#4 Май 15, 2014 22:17:47

Suliman
Зарегистрирован: 2013-06-18
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с копированием директории

MindHatter
и как быть? Мне нужно чтобы просто копировать нужную папку.

Офлайн

#5 Май 16, 2014 13:54:23

MindHatter
Зарегистрирован: 2014-05-09
Сообщения: 20
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема с копированием директории

Тут все просто. Удали директорию назначения, то есть ‘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)

Надеюсь смысл ясен

Отредактировано MindHatter (Май 16, 2014 13:59:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version