0

パイソン学習者。では、失礼します。私はフォローしています: http://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

ファイルを読みたい。ここに私のファイルがあります:

# cat test 
line1 word1
line2 word2
line3 word3
line4 word4

ここに私のコードがあります:

>>> f = open ('test')
>>> for line in f:
...     print f
... 
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>
<open file 'test', mode 'r' at 0xb7729180>

どのように、そしてなぜ私は出力を上回っていますか? 行ごとに各行を印刷することを望んでいました。ここで何が欠けていますか。上記のリンクを見ると、私の構文は問題ないように見えますが、出力はそうではありません

ありがとう。

4

5 に答える 5

3

反復中に、変数fの代わりに出力しています。line

>>> f = open ('test')
>>> for line in f: 
...        print line
于 2012-11-06T07:13:38.813 に答える
2
for line in open('test')
    print line
于 2012-11-06T07:14:21.870 に答える
2

ファイル ハンドルを出力しています。print fprint lineに置き換えます。

f = open ('test')
for line in f:
    print line
于 2012-11-06T07:12:07.237 に答える
0

readline 関数を使用して行を読み取る必要があります。次に、各行をリスト値に変換します。それが、forステートメントを実行できるときです。

于 2012-11-06T07:15:44.177 に答える
0

for line in f:

これは、「f の内容を繰り返し処理し、各項目を「line」という名前の変数に割り当てることを意味します。コンバースではありません。f は変更されません。それは、割り当て先の変数ではなく、データの取得元です。

そうは言っても、私が見た他の答え..名前が「D」で始まる人から..正しいです:あなたはしたい、print (line)ではありませんprint(f)。これを () で書いているのは、これを習慣にするのが良いからです。そうすることで、コードが Python 2.x と Python 3.x の両方と互換性を持つようになります。

于 2012-11-06T07:17:08.050 に答える