company_at_node
メソッド(以下を参照)を2回呼び出すと、最初の呼び出しの行だけが印刷されます。私はおそらくseek
を次の呼び出しのために読者の先頭に戻す必要があると考えたので、 self.companies.seek(0)
をcompany_at_node
メソッドの最後に追加しましたが、DictReaderには属性検索がありません。ファイルは決してクローズされないので(これはエラーメッセージが表示されないため)、これはValueError i/o operation on closed file
とは思われませんでした(これは数多くの質問があります)DictReaderの先頭に戻るには?
DictReaderの先頭に戻り、2回目の繰り返しを繰り返します(つまり、2番目の関数呼び出し)。
class CSVReader:
def __init__(self):
f = open('myfile.csv')
self.companies = csv.DictReader(f)
def company_at_node(self, node):
for row in self.companies:
if row['nodeid'] == node:
print row
self.companies.seek(0)
のであればあなたは 'f.seek()'にし、再初期化 'DictReader'持っているが、それならばメモリに全体の辞書をロードすることをお勧めします巨大ではない。 – Selcuk