【问题标题】:How to create a file with '01' if name exists?如果名称存在,如何创建带有“01”的文件?
【发布时间】:2020-07-18 17:32:37
【问题描述】:

open() 内置函数中是否有特定参数,如果文件名已经存在,它会通过在文件名中添加数字来创建文件??

这样,如果“file.txt”存在,它会自动创建“file-01.txt”

或任何其他解决方案。!

【问题讨论】:

  • 没有这样的标志。您阅读过open 的文档吗?

标签: python operating-system built-in file-manager


【解决方案1】:

不,我不认为有这样的事情,但你可以使用 os.path.isfile 自己做:

import os
filename = "yourFileName.txt"
if os.path.isfile(filename): #check if filename exists in the directory
    filename = filename.split(".")[:-1] + "-01" + filename.split(".")[-1]
with open(filename, "w+") as f:
    f.write(yourString)

【讨论】:

    【解决方案2】:

    这样的?

    import os
    if os.path.exists(filename):
       fileparts = filename.split('.')
       filename = fileparts[0] + '01.'
       for a in fileparts[1:]:
         filename += a
    

    【讨论】:

    • 不,如果文件名是“file.txt”,它会变成“file.txt01”,如果有像文件名一样的目录,它会返回True!
    • 对不起...已经注意到了,但你在编辑之间抓住了我 :-)
    【解决方案3】:

    我找到了解决办法,谢谢!!

    b = True
    c = 1
    while b:
        f_name = 'Task-{:02.0f}.txt'.format(c)
        try:
            f = open(f_name,'x')
            b = False
        except FileExistsError:
            c += 1
    f.close()
    

    【讨论】:

    • 请为对您有帮助的答案投票,并将最有用的答案设为已接受!
    【解决方案4】:

    看看你对此有何看法。 ...这就是我用来做你正在寻找的东西。这是我之前发现的解决问题的最小方法,并且很容易包装成一个函数:

    import os
    
    name = 'blah.txt'
    
    uniq_name = name
    while os.path.isfile(uniq_name):
        # if increment variable 'delta' isn't defined, make it 1.  Otherwise increment
        delta = delta+1 if 'delta' in vars() else 1
        uniq_name = f'{os.path.splitext(name)[0]}-{delta}{os.path.splitext(name)[1]}'
    
    # this you don't need - it's just equivalent to a 'touch' command to show
    # the output
    open(uniq_name, 'a').close()
    

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      相关资源
      最近更新 更多