#python #csv #datetime
#питон #csv #дата и время
Вопрос:
Я пытаюсь создать код и сохранить файл csv с именем filename = «title» «сегодняшняя дата и время» «.csv»
from datetime import date
import csv
filename = "title_" str(date.today()) ".csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)
похоже, это работает, и файл сохраняется как «title_2020-12-03.csv»
Но я также хочу указать имя файла со временем, поэтому я попробовал
from datetime import datetime
now = datetime.now()
today = now.strftime("%Y/%m/%d_%H:%M")
filename = "title_" datetime.now().strftime("%Y/%m/%d_%H:%M") ".csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)
но это выдает ошибку
Ошибка FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘title_2020 /12/ 03_11:22.csv’
Любая помощь будет оценена, спасибо!
Ответ №1:
Проблема с вашим подходом заключается в том, что требуемое имя файла будет распознано как измененный путь к вашему файлу из-за косых черт ( '/'
).
Таким образом, в случае имени 'title_2020/12/03_11:22.csv'
вы не найдете файл с тем же именем в каталоге относительно cwd выполнения, а скорее программа интерпретирует имя файла как путь и попытается найти файл '03_11:22.csv'
в 'title_2020/12/'
каталоге.
Поэтому вам следует использовать другой разделитель, который не совпадает с путями к файлам в вашей системе. В общем, безопаснее всего использовать тире или символы подчеркивания.
Комментарии:
1. Спасибо за вашу помощь, после удаления ‘/’ и ‘:’ это работает
Ответ №2:
Использование тире вместо косых черт в дате, когда это работает:
from datetime import datetime
now = datetime.now()
today = now.strftime("%Y/%m/%d_%H:%M")
filename = "title_" str(datetime.now().strftime("%Y-%m-%d_%H:%M")) ".csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)
Комментарии:
1. Спасибо за вашу помощь, но я по-прежнему получаю ту же ошибку: Ошибка FileNotFoundError: [Ошибка 2] Нет такого файла или каталога: ‘title_2020-12-03_08:51.csv’
2.
:
также не допускается в имени файла, по крайней мере, в Windows.3. @MrFuppes: Спасибо, это может быть причиной, я сам использую Linux и никаких проблем. Возможно, @Zack Lee попробуйте с точкой или
h
, напримерfilename = "title_" datetime.now().strftime("%Y-%m-%d_%Hh%M") ".csv"
4. @MrFuppes Спасибо после удаления «:» это работает