2012-04-14 23 views
1

これはちょっと変です。私のプログラムは出力をファイルに書き込むことができません。そのエラーは表示されません。私は同時に、標準出力を使用し、その上映..ファイルに書き込むことができません

これは私のコードであることがわかった。これは、ファイルへの書き込みをされていない理由(パイソン2.7)

#!/usr/bin/env python 


import re 

def isRecycled(n,m): 
    n = str(n) 
    m = str(m) 

    try: 
     ........... 
     ........... 
     My Code. 

    except ValueError: 
     return False 

ip = open("C-small-attempt0.in", "r") 
op = open("output.txt", "a") 
for num, eachLine in enumerate(ip.readlines()[1:]): 
    ...... 
    ...... 
    My code 

    ## This is WORKING 
    print "Case #%d: %d" %(num+1, count) 

    ## This is NOT Working 
    op.write("Case #%d: %d" %(num+1, count)) 

は、誰も私を伝えることができます。

私は"w+","w"モードとwritelines()メソッドを使用しようとしましたが、動作しませんでした。私はこれが起こっているのはなぜop.close()

  1. を使用してファイルを閉じたとき

    編集

    はしかし、それは働いていましたか? (私はそれ以前に遭遇していませんでした)

  2. op.write()が見つかると直ちにファイルに書き込まれますか?

答えて

3

ファイルを閉じてディスクに書き込む必要があります。 op.close()をコードの最後に追加します。やって

+0

ええ、その、今取り組んでいます。 – Surya

+0

できるだけそれがなぜ起こったか教えてください。私はファイルを閉じない多くの小さなパズルを書いた...彼らは働いた。なぜこの場合に起こったのですか? – Surya

+0

これはバッファリングによるものです。 file.write()メソッドのドキュメント - http://docs.python.org/library/stdtypes.html#file-objectsを参照してください。 – timc

1

変更を行った後にフラッシュするか、ファイルを閉じてバッファがディスクに書き込まれていることを確認してください。

-2

試してみてください。代わりの

op = open("output.txt", "ab") 

op = open("output.txt", "a")