2016-11-27 2 views
-2

I持って次のデータを含むファイルの名前TEXT.TXT:ファイルに存在する文字列を検索するループが、最初の反復ではTrueを返し、それ以外ではFalseを返します。

My 
Name 
Is 
Lorem 
Ipsum 

私のpythonコード:

with open("text.txt") as f: 
    for i in xrange(5): 
     print "Is\n" in f 

出力:

True 
False 
False 
False 
False 

出力する場合にのみ真であるのはなぜi = 0?

すべての繰り返しに対してTrueを取得するにはどうすればよいですか?私はどこにでもファイルの内容を保存したくない!

+0

あなたは行内のメンバーではなく、ファイルオブジェクト(行の繰り返し可能性)をチェックしています。そしてその出力を得る理由は、あなたの行の間に '' Is \ n "'があることです。なぜなら最初にTrueを返すのですが、ファイルオブジェクトはオブジェクトのようなイテレータなので、残りのチェックでFalseを返します。 – Kasramvd

答えて

0

最初のテストではファイルを消費しているので、ファイルの最後には他の繰り返しがあります。

あなたは文字列に内容を読むことができますが、あなたは、ファイルを保存したくないので、私が代わりにファイルの先頭にseekに提案している:それはにファイルを通過するので

with open("test.txt") as f: 
    for i in range(5): 
     f.seek(0) 
     print ("Is\n" in f) 
0

チェック。最初の反復の後、あなたはファイルの最後にいます。ファイルをもう一度読みたい場合は、ファイルの先頭にseek()を入れることができます。

関連する問題