Как создать файл с '01', если имя существует? - PullRequest
1 голос
/ 06 апреля 2020

Существует ли указанный аргумент c во встроенной функции open (), чтобы, если имя файла уже существовало, он создавал файл, добавляя число к его имени ??

, так что если " file.txt "существует, он автоматически создает" file-01.txt "

или любое другое решение.!

Ответы [ 4 ]

1 голос
/ 06 апреля 2020

Нет, я не думаю, что есть что-то подобное, но вы можете сделать это самостоятельно, используя 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)
0 голосов
/ 07 апреля 2020

Посмотрите, что вы об этом думаете. ... это то, что я использую, чтобы делать то, что вы ищете. Это наименьший способ решения проблемы, который я нашел раньше, и его легко заключить в функцию:

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()
0 голосов
/ 06 апреля 2020

Я нашел решение, спасибо !!

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()
0 голосов
/ 06 апреля 2020

Как то так?

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