Добавление строки только при создании файла
Есть код который работает в бесконечном цикле и каждый день создаёт новый файл, нужно что бы при создании файла писалась первая строка и при повторном запуске кода в один день он видел что файл с датой этого дня в названии уже есть и не добавлял первую строку а лишь дописывал остальные.
Пытался сделать добавлением аргумента '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()
Можно использовать конструкцию 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 - время в милисекундах, которое для вас не критично.