Добавление строки только при создании файла

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

Пытался сделать добавлением аргумента 'x' но при созданом файле лишь выдаёт ошибку что файл существует

import time

while True:
    file_way = '{}.csv'.format(time.strftime('%Y-%m-d'))
    file = open(file_way, 'x')
    file.write("test1\n") //первая строка которая долна писаться лишь единожды
    file.close()
    file = open(file_way, 'a')
    file.write('test2\n') //тут по идеи поступаюие данные которые каждый раз разные
    file.close()

Может можно сделать внутри цикла какую-то прверку на существование файла? Вроде "если файл не существует то создать файл и написать первую строку" и возврат в основной цикл, но не знаю как задать это условие на существование файла


Ответы (2 шт):

Автор решения: Сергей

В таких ситуациях надо просто использовать поиск, например, написав: "python проверка наличия файла". Сразу увидите, что вам нужно использовать os.path.isfile. На всякий случай, находим её описание тут. и читаем, а потом вносим в код небольшие изменения. Проверьте, как работает, исправьте, где нужно.

import time
# Добавили импорт
import os.path


while True:
    file_way = '{}.csv'.format(time.strftime('%Y-%m-d'))
    # Проверяем, и если файла нет, то пишем первый раз
    if not os.path.isfile(file_way):
        file = open(file_way, 'x')
        file.write("test1\n") //первая строка, которая должна писаться лишь единожды
        file.close()
    # Иначе (файл есть) - пишем новые данные.
    else:
        file = open(file_way, 'a')
        file.write('test2\n') //тут, по идее, поступают данные которые каждый раз разные
        file.close()
→ Ссылка
Автор решения: n1tr0xs

Можно использовать конструкцию try... except:

import time

while True:
    file_way = '{}.csv'.format(time.strftime('%Y-%m-d'))
    try:
        file = open(file_way, 'x')
        file.write("test1\n") //первая строка которая долна писаться лишь единожды
        file.close()
    except FileExistsError:
        file = open(file_way, 'a')
        file.write('test2\n') //тут по идеи поступаюие данные которые каждый раз разные
        file.close()

И еще я бы советовал использовать менеджер with:

import time

while True:
    file_way = '{}.csv'.format(time.strftime('%Y-%m-d'))
    try:
        with open(file_way, 'x') as file:
            file.write("test1\n")
    except FileExistsError:
        with open(file_way, 'a') as file:
            file.write('test2\n')

И еще одно замечание. Если вы будете без задрежки пытаться открыть/закрыть файлы - система может этому не обрадоваться. Советую поставить задержку time.sleep(ms) в конце цикла, где ms - время в милисекундах, которое для вас не критично.

→ Ссылка