2009-09-19 31 views
0

我發現這個類需要一個空格分隔的文件,如果有多個空格,它們將被視爲一個單獨的分隔符。我如何看到這個對文件的影響?如何在文件中查看我班的結果?

class FH: 

    def __init__(self, fh): 
     self.fh = fh 

    def close(self): 
     self.fh.close() 

    def seek(self, arg): 
     self.fh.seek(arg) 

    def fix(self, s): 
     return ' '.join(s.split()) 

    def next(self): 
     return self.fix(self.fh.next()) 

    def __iter__(self): 
     for line in self.fh: 
      yield self.fix(line) 

那麼如何在文件中看到這項工作?我創建了一個包含多個空格的文件,以便在操作中查看它。

我已經做到了這一點:

 
In [31]: FH('classfhtry.csv') 
Out[31]: 

In [32]: r = FH('classfhtry.csv') 

In [33]: r 
Out[33]: 

In [34]: print r 
-------> print(r) 


In [35]: f = open(r) 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 

/home/blahblahblah/Documents/Programming/EXERCISES/piece.py in() 
----> 1 
     2 
     3 
     4 
     5 

TypeError: coercing to Unicode: need string or buffer, instance found 

我希望看到我的動作類!感謝任何2cents!

回答

5

看起來像這個類在初始化器中獲取文件(而不是文件名)。嘗試:

r = FH(file('classfhtry.csv', 'r')) 
for line in r: 
    print line 
+0

在[36]:R = FH(文件( 'classfhtry.csv', 'R')) 在[37]:在R線: ....:印記R .... : ....: <__在0x987590c主要__ FH實例。> <__在0x987590c主要__ FH實例。> <__在0x987590c主要__ FH實例。> 我沒有能看到最新的文件中。有什麼方法可以訪問<__ main ....等? – Pete

+0

哎呀,我犯了一個錯......應該是「打印行」而不是「打印r」(更正) – dcrosta

+0

它的作品!!!!!!!!謝謝! – Pete

0

dcrosta是正確的。該類需要文件中的空格分隔內容。 有這樣一個文件:

somefile.txt

one two 
three four 
five six 

並遵循,上述方法建議。該類是一個迭代器(它產生文件obj中的行)。所以,訪問文件的方式是遍歷內容。

+0

In [36]:r = FH(file('classfhtry.csv','r'))In [37]:for line in r:....:print r ....:....: <__ main __。0x987590c處的FH實例><__ main __。0x987590c處的FH實例><__ main __。0x987590c處的FH實例>我無法查看文件中的內容。有什麼方法可以訪問<__ main .... etc. ??我試過了,但是......嗯......我怎麼才能看到它的工作? – Pete

+0

看看這個貼吧http://codepad.org/s3PPnNvI 我有模擬文件打開功能。但在那個地方。你可以打開('文件名')並具有相同的效果。 –