Форум сайта python.su
0
В простейшем скрипте при использовании функции копирования в модуле 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’
Офлайн
568
File “E:\copy.py”, line 3, in <module>
Офлайн
0
Благодарю, помогло! А с чем это связано, конфликт из-за названия скрипта? Причем, я заметил, что не работает (т.е. не копируется) только в среде windows, а на линухе интерпретатор ругается так же, но работу делает! Файл копируется даже не меняя названия скрипта!
Офлайн
221
x-ray
Потому что, если вы внимательно вглядитесь в код ошибки, внутри shutil идет импорт модуля copy
x-rayВ соответствии с правилами импортирования первым модуль copy ищется в текущей директории, где он находит ВАШ модуль copy, который импортирует, но не находит в нем искомых объектов - образуется исключительная ситуация которая и всплывает в виде ошибки.
File “C:\Python32\lib\tarfile.py”, line 50, in <module>
import copy
a=10 #OK for='for' # ERROR list=[1,10] # BAD, error will be in bellow l=list('qwerty')
Офлайн
0
Благодарю за подробное объяснение! Про зарезервированные слова я знаю, а вот про название функции в стандартном модуле (в данном случае “copy”) не знал…
Офлайн