1

for ループの後、何らかの理由で、出力テキスト ファイルを読み取ることができません。例えば ​​:

for line in a:
 name = (x)
 f = open('name','w')
for line in b:
 get = (something)
 f.write(get)
for line in c:
 get2 = (something2)
 f.write(get2)

 (the below works if the above is commented out only)

f1 = open(name, 'r')
for line in f1:
 print line

ループをコメントアウトすると、ファイルを読み取って内容を出力できます。

私はコーディングに非常に慣れていないので、これは私が見逃していることは明らかだと思います.しかし、私はそれを理解できないようです. 私はグーグルを使ってきましたが、読めば読むほど何かが足りないと感じます。アドバイスをいただければ幸いです。

4

1 に答える 1

3

@bernieは上記の彼のコメントに正しいです。問題は、そうすると、ファイルが空白に書き換えられますが、Python / OSは、バッファがいっぱいになるか、を呼び出すまで、open(..., 'w')実際にはディスクに書き込みを行わないことです。(ディスクへの書き込みが遅いため、この遅延は処理を高速化するのに役立ちます。)ファイルを閉じずにこれを強制的に呼び出すこともできます。writeclose()flush()

bernieが参照するステートメントは次のwithようになります。

 with open('name', 'w') as f:
     for line in b:
         b.write(...)
     for line in c:
         b.write(...)
 # f is closed now that we're leaving the with block
 # and any writes are actually written out to the file

 with open('name', 'r') as f:
     for line in f:
         print line

2.6や2.7ではなくPython2.5を使用している場合はfrom __future__ import with_statement、ファイルの先頭で行う必要があります。

于 2012-05-16T05:24:16.493 に答える