【问题标题】:Overwrite File or Append覆盖文件或追加
【发布时间】:2017-07-21 07:42:12
【问题描述】:

需要一个函数来在文件不存在时写入文件。 如果文件确实存在,则覆盖该文件,但保存原始文件或将新文件加 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"

【问题讨论】:

  • 您遇到了什么问题?
  • 所以现在它会附加当前文件,因为它是写入的。但是如果有人运行该程序两次,我想创建另一个文件,而不是一遍又一遍地附加相同的文件。我发现它必须在我逐行写入时附加。

标签: python python-2.7 file io


【解决方案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:
    ....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-19
    • 2012-09-21
    • 2010-10-16
    • 2016-01-01
    • 2016-11-28
    • 1970-01-01
    • 2017-09-14
    • 2017-05-15
    相关资源
    最近更新 更多