2012-04-14 179 views
1

這有點奇怪。我的程序無法將輸出寫入文件。它甚至沒有顯示任何錯誤。我同時使用標準輸出,發現其表現..無法寫入文件

這是我的代碼:(Python 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. python是否立即寫入文件一旦發現op.write()

回答

3

您需要關閉該文件才能寫入磁盤。將op.close()添加到代碼的末尾。

+0

呀,現在它的工作。 – Surya 2012-04-14 14:05:15

+0

如果可能,你能告訴我爲什麼發生了。我寫了許多小拼圖,我沒有關閉文件......並且他們工作。爲什麼在這種情況下發生? – Surya 2012-04-14 14:06:11

+0

這是由於緩衝。請參閱file.write()方法的文檔 - http://docs.python.org/library/stdtypes.html#file-objects – timc 2012-04-15 04:15:00

1

確保在更改完成後清空或關閉文件以確保將緩衝區寫入磁盤。

-2

嘗試做:

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

相反的:

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