2017-03-01 152 views
0

需要一個函數,如果文件不存在,它將寫入一個文件。 覆蓋文件,如果它確實存在,但保存的原始或incriments新文件的1.覆蓋文件或追加

命名格式是yyyymmdd,所以如果存在它會創建一個名爲yyymmdd-v2或類似的東西。

這是我目前的。

def write_diff_file(x): 
    from datetime import datetime 
    datestring = datetime.strftime(datetime.now(), '%Y_%m_%d') 
    try: 
     with open("./%s" % 'filediff_' + datestring + '.txt', 'a') as f: 
      line = str(x).replace("archive\\", "") 
      f.write(line) 
      f.write("\n") 
      f.name 
     #print "Comparison File Written" 
    except IOError as (errno, strerror): 
     print "I/O error({0}): {1}".format(errno, strerror) 
     print "Error in write_diff_file function" 
+0

你遇到什麼問題? – MooingRawr

+0

所以現在它會寫入當前文件。但是,如果有人運行程序兩次,我想創建另一個文件,而不是一次又一次地追加同一個文件。我發現它必須追加,因爲我一行一行地寫。 – NineTail

回答

1

您想檢查文件是否存在,如果文件名已經存在,請修改文件名。像這樣的東西應該工作:

import os 
from datetime import datetime 

datestring = datetime.strftime(datetime.now(), '%Y_%m_%d') 
filename = 'filediff_' + datestring + '.txt' 
filenb = 1 
while os.path.exists(filename): 
    filenb += 1 
    filename = 'filediff_{0}_v{1}.txt'.format(datestring, filenb) 
with open(filename, 'w') as f: 
    ....