2010-08-11 116 views
0

我是Python的新手。 我試圖創建一個名爲ic0File的類。無法在_init__中讀取文件

這裏是我所得到的,當我用它(的Python 3.1)

>>> import sys 
>>> sys.path.append('/remote/us01home15/ldagan/python/') 
>>> import ic0File 
>>> a=ic0File.ic0File('as_client/nohpp.ic0') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "ic0File.py", line 7, in __init__ 
    print ("".join(self.lines)) 
NameError: global name 'infile' is not defined 

類代碼是:

class ic0File: 
    def __init__(self,filename): 
     self.infile = open(filename, 'r') 
     import sys 
     import re 
     self.lines=self.infile.readlines() #reading the lines 
     print ("".join(self.lines) 

感謝,

+0

我懷疑這是實際的代碼。請使用創建錯誤的實際代碼更新您的問題。另外,你使用的是什麼版本的Python?你跟隨什麼教程? – 2010-08-11 10:19:51

+2

您提供的代碼看起來不太符合您收到的錯誤。特別是,Python引用的第7行甚至不包含標識符「infile」,所以這可能意味着您在將源文件*加載到帶有import ic0File的Python解釋器中之後,更改了源文件*。我建議退出Python解釋器,然後再試一次。 – 2010-08-11 10:20:00

+0

事實上,我剛剛測試過它,它工作正常。 – katrielalex 2010-08-11 10:25:44

回答

0

重新加載模塊(例如,如果你已修改代碼),請使用reload()。你的情況:

reload(ic0file) 

在Python 3,reload被轉移到imp庫:

import imp 
imp.reload(ic0file) 
0

正如其他用戶所指出的那樣,實際上提出了該異常將是有益的代碼,但我猜測是你試圖訪問ic0Fileinfile屬性,就好像它實際上是一個變量。

你可能寫的是這樣的:而不是

self.lines = infile.readlines() #reading the lines 

self.lines = self.infile.readlines() #reading the lines 

中的ic0File的方法之一。與其他語言不同,對象屬性不會成爲所述對象方法中的局部變量。