Найти - Пользователи
Полная версия: ошибка при использовании модуля shutil
Начало » Python для новичков » ошибка при использовании модуля shutil
1
x-ray
В простейшем скрипте при использовании функции копирования в модуле shutil
получаю ошибку:
#!/usr/bin/env python32
import shutil
shutil.copy('E:\888.txt','E:\999.txt')   # копировать

интерпретатор выдает:
Traceback (most recent call last):
File “E:\copy.py”, line 3, in <module>
import shutil
File “C:\Python32\lib\shutil.py”, line 14, in <module>
import tarfile
File “C:\Python32\lib\tarfile.py”, line 50, in <module>
import copy
File “E:\copy.py”, line 5, in <module>
shutil.copy('E:\888.txt','E:\999.txt') # копировать
AttributeError: ‘module’ object has no attribute ‘copy’

то-же самое и при использовании функции copyfile (этого же модуля)… кто подскажет в чем проблема?
FishHook
File E:\copy.py, line 3, in <module>
Переименуй copy.py во что-нибудь другое
x-ray
Благодарю, помогло! А с чем это связано, конфликт из-за названия скрипта? Причем, я заметил, что не работает (т.е. не копируется) только в среде windows, а на линухе интерпретатор ругается так же, но работу делает! Файл копируется даже не меняя названия скрипта!
JOHN_16
x-ray
Потому что, если вы внимательно вглядитесь в код ошибки, внутри shutil идет импорт модуля copy
x-ray
File “C:\Python32\lib\tarfile.py”, line 50, in <module>
import copy
В соответствии с правилами импортирования первым модуль copy ищется в текущей директории, где он находит ВАШ модуль copy, который импортирует, но не находит в нем искомых объектов - образуется исключительная ситуация которая и всплывает в виде ошибки.

Нельзя называть ваши файлы также как и модули стандартной или других библиотек - это может вызвать противоречия, нелья называть переменные (или другие объекты) зарезервированными словами и/или названиями встроенных объектов - это вызовет либо синтаксическую ошибку, либо ошибку исполнения в будущем. Т.е.
a=10 #OK
for='for' # ERROR
list=[1,10] # BAD, error will be in bellow
l=list('qwerty')
x-ray
Благодарю за подробное объяснение! Про зарезервированные слова я знаю, а вот про название функции в стандартном модуле (в данном случае “copy”) не знал…
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