Объект Python 'function' не имеет атрибута 'GzipFile'
Я пишу функцию для сжатия файла следующим образом:
def gzip(filename):
'''Gzip the given file and then remove original file.'''
r_file = open(filename, 'r')
w_file = gzip.GzipFile(filename + '.gz', 'w', 9)
w_file.write(r_file.read())
w_file.flush()
w_file.close()
r_file.close()
os.unlink(filename)
Однако, когда я запускаю свою программу, я получаю сообщение об ошибке:
У объекта 'function' нет атрибута 'GzipFile'.
Что я сделал не так? Спасибо заранее!
2 ответа
Вы назвали свою функцию gzip
который так же, как gzip
модуль. Теперь, когда вы запускаете свою функцию, Python захватывает саму функцию (думайте рекурсию), а не gzip
модуль, который вы затеняли. Есть два решения. 1) переименуйте функцию:
def gzip_func():
...
2) присвойте модулю другое локальное имя при импорте:
import gzip as gzip_mod
...
def gzip():
...
w_file = gzip_mod.GzipFile(filename + '.gz', 'w', 9)
Вы используете gzip
модуль, но ваша функция имеет то же имя, поэтому она перезаписывает модуль.
Либо вы должны переименовать функцию или использовать что-то вроде import gzip as gzip_module
,