2013-05-21 76 views
0

我寫的壓縮文件中的函數如下:蟒蛇「功能」對象有沒有屬性「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' object has no attribute 'GzipFile'.

我做錯了什麼?事先感謝!

回答

4

您已將您的功能命名爲gzip,它與gzip模塊相同。現在,當你運行你的函數時,python抓取函數本身(認爲遞歸),而不是你已經被遮蔽的gzip模塊。有兩種解決方案。導入時

def gzip_func(): 
    ... 

2)給該模塊的不同地方名:1)重命名功能

import gzip as gzip_mod 
... 
def gzip(): 
    ... 
    w_file = gzip_mod.GzipFile(filename + '.gz', 'w', 9) 
+0

非常感謝@ mgilson! –

0

您使用gzip模塊,但你的函數具有相同的名稱,所以它覆蓋模塊。
要麼你應該重命名該函數或使用類似import gzip as gzip_module的東西。

+0

謝謝@TobiMarg –

+0

@hoangtran很高興聽到。如果有幫助的話,你可以/也應該注意它,如果答案解決了你的問題,你應該接受答案(看這個鏈接:http://meta.stackexchange.com/q/5234)。 – TobiMarg

相關問題