2017-08-08 79 views
0

我有以下代碼,它使用包含計數的python 將數據寫入文本文件(.txt)。 代碼:使用Python遞增存儲在文件中的計數器

f_check = file("/home/ccheck/test/node_file.txt",'r') 
f_data = f_check.read() 
chk_data = int(f_data) 
if(count > chk_data): 
    print (' ') 
    print 'count increased to = ', node_count 
    print (' ') 
    print 'previous count = ', chk_data 
    print (' ') 
    f1 = open("node_file.txt", "w") 
    n1 = f1.write(str(count) + "\n") 
    f1.close() 

問題:我已經爲「2」(計數),當根據邏輯計數增加下次在文本文件中的數據(例如: - 計數增加至3)它應寫入數據在它並保存相同,但截至目前它不寫在.txt文件增加計數,上述代碼是否需要任何更改?

+0

嘗試關閉文件,一旦你完成閱讀,可能會有所幫助。 –

+0

操作系統在這裏沒關係。 Python被設計爲跨平臺。 –

回答

0

一個值得注意的問題是,您在閱讀文件後沒有關閉文件。

我建議你使用一個with...as上下文管理器,所以你並不需要擔心關閉文件:

with open ("/home/ccheck/test/node_file.txt", 'r') as f: 
    chk_data = int(f.read().strip()) 

if(count > chk_data): 
    with open("/home/ccheck/test/node_file.txt", "w") as f: 
     f.write(str(count) + "\n") 

其他小的改動涉及從f.read()使用str.strip剝離\n

+0

但它不覆蓋以前的數據與新的,還有其他要添加? – Rebbeca

+0

@Rebbeca檢查你的'count'變量。我猜'if'沒有執行。 –

+0

@Rebbeca我也修復了寫路徑。 –

0

有兩件事情需要注意。

1.您正在從f_check = file("/home/ccheck/test/node_file.txt",'r')讀取文件並致函open("node_file.txt", "w")使用絕對路徑編寫

  1. 使用with open('full path file', 'r') as f文件操作的樣式類型。
-1

我認爲文件保持打開狀態,當計數發生變化時,您將無法再次寫入文件。

chk_data = None 
with open("/home/ccheck/test/node_file.txt",'r') as f: 
    chk_data = int(f.read()) 

if(count > chk_data): 
    print (' ') 
    print 'count increased to = ', node_count 
    print (' ') 
    print 'previous count = ', chk_data 
    print (' ') 
    with open("/home/ccheck/test/node_file.txt", "w") as f: 
     f.write(str(count) + "\n") 

我做了以下內容:

  1. 關閉該文件讀取/寫入使用上下文管理後
  2. 改爲完整路徑寫入和讀出,以確保使用相同的文件。