Как я могу увидеть результаты моего класса в файле? - PullRequest
0 голосов
/ 19 сентября 2009

Я обнаружил, что этот класс принимает файл с разделителями-пробелами, и если есть несколько пробелов, они будут рассматриваться как один разделитель. Как я могу увидеть влияние этого на файл?

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

Я хочу увидеть свой класс в действии! Спасибо за любые 2цента!

Ответы [ 2 ]

5 голосов
/ 19 сентября 2009

Похоже, этот класс принимает файл (не имя файла) в инициализаторе. Попробуйте:

r = FH(file('classfhtry.csv', 'r'))
for line in r:
    print line
0 голосов
/ 19 сентября 2009

dcrosta правильно. Класс ожидает разделенного пробелом содержимого в файле. Есть файл как:

somefile.txt

one two
three four
five six

И следуйте методу, предложенному выше. Класс является итератором (он выдает строки из файла obj). Таким образом, способ доступа к файлу - итерация по содержимому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...