2017-03-01 147 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: 
    ....