@pcdesign

Как добавлять нижнее подчеркивание к имени файлу до тех пор пока не окажется, что файл не существует?

Есть файлы:

/tmp/1.txt
/tmp/1_.txt
/tmp/1__.txt

Функция принимает имя файла. Проверяет его на существование.
Если файл существует, то добавляет _ и опять проверяет.
И так до тех пор пока не найдет свободный вариант.
То есть в данном случае функция должна вернуть /tmp/1___.txt

Как это реализовать на Python?
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
@kazmiruk
import os

fn = "1.txt"

while os.path.exists(fn):
    fn = fn.split('.')
    fn = "".join(fn[:-1]) + "_."  + fn[-1]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zenwalker
@zenwalker
0xABADBABE
Примерно так

import os


def safe_path(path):
    name, ext = os.path.splitext(path)

    while True:
        current_name = name + ext
        if not os.path.exists(current_name):
            return current_name
        name += '_'


if __name__ == '__main__':
    open('/tmp/1.txt', 'a').close()
    open('/tmp/1_.txt', 'a').close()
    assert safe_path('/tmp/1.txt') == '/tmp/1__.txt'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы