2017-12-30 18 views
1

ファイル内で複数の行を読み込もうとしていて、readline()メソッドを変数に代入しても動作しないようです。最初の行を印刷し続けます。私はそれを変数に代入しないと動作しないようです。何か案は?readline()は最初の行だけを読み取る

私はPython 3.6.2を使用しています。 - open()で返されるイテレータの文脈で

# This is it not working (I omitted the 'gradesfile_path' variable) 

gradesfile = open(gradesfile_path,'r') 
readgrades = gradesfile.readline() 

print(readgrades) 
print(readgrades) 

# This is working when I don't call the variable 

print(gradesfile.readline()) 
print(gradesfile.readline()) 
print(gradesfile.readline()) 
+0

あなたが最初の行が空でないことを確認されています。私のために働いているので – theBuzzyCoder

+0

割り当ては変数に関数呼び出しを割り当てません。関数が呼び出されると、最初の行が代入されます。 – danielcooperxyz

+0

'readgrades'は行を読み込んだ結果を含みます。あなたが別の' readgrades = gradesfile.readline() 'を実行しない限り変更されません... –

答えて

1

readline()は、単一の行を読み取ります。ここに私のコードです。そして、という行には、readgradesのように、常にその行が含まれるように、が読み込まれます。そして、あなたが行うことができます

readgrades = gradesfile.readline ##Note the absence of call 

を::

はおそらく、あなたが変数にメソッドを割り当て、代わりにその変数を呼び出すためのもの

readgrades() 
+0

私はこの答えが好きでしたが、それの本質は:.readlineはメソッドであり、.readline()はそのメソッドへの関数呼び出しであり、赤のスレッドでは説明されていません+ 1 –

+0

ありがとうございました!コードは現在期待どおりに動作しています、私は今ファイルをループすることができます...ありがとう再び –

1

あなたが変数にgradesfile.readline()を割り当てる場合、あなたが実際にあります1行を読み込んでその行を変数に格納する

+0

ありがとう。 –

0

readline()は、ファイルを1行ずつ読み込む必要があるので、行を読み込む必要があるたびに呼び出す必要があると思います。readline()を使用することに制限されていない場合は、目的を達成することができます:

読み取り(): - ファイル全体を読み込みます一度

readlines(): - ファイル全体を読み込み、Pythonのリストにそれをなります

with open('file_name', 'r') as file_obj: 
    print file_obj.readlines() 

または

with open('file_name', 'r') as file_obj: 
    some_var = file_obj.readlines() 
    print some_var 

または

with open('file_name', 'r') as file_obj: 
    print file_obj.read() 

または

with open('file_name', 'r') as file_obj: 
    some_var = file_obj.read() 
    print some_var 
関連する問題