2015-01-11 2 views
-2

Я новичок в python и пытаюсь работать с Pandas, чтобы выполнить некоторую работу с несколькими CSV-файлами с предсказуемыми именами Log_ (yyyy/mm/dd).Форматирование строки в Python дает мне файл не найдена ошибка

То, что я планирую, достаточно просто, но открытие файла дает мне проблемы.

today = date.today() 
m,d,y = today.month, today.day, today.year 

file_name = 'Log_{}-{}-{}'.format(y,m,d) 
pd.read_csv(file_name) 

Это даст мне ошибку, но это работает

file_name = 'Log_2015-01-10' 
pd.read_csv(file_name) 

Они печатают то же самое, и str(file_name) не решает проблему.

+0

'm, d, y = today.month, today.year, today.day' это неправильно, это должно быть' m, y, d' – GLHF

ответ

0

У вас есть две проблемы: назначение вашего кортежа меняет значения дня и года, и вам нужно знать значения нулевой точки ниже 10. Фактически вы создаете строку 'Log_10-1-2015', а не 'Log_2014-01-10'.

Форматирование даты в строку проще всего сделать, оставив форматирование объекта даты, а не извлечения отдельных компонентов себя:

today = date.today() 
file_name = 'Log_{:%Y-%m-%d}'.format(today) 

В % поля strftime() formatting instructions, которые используют дополнения нулями по умолчанию.

Демо:

>>> from datetime import date 
>>> today = date.today() 
>>> 'Log_{:%Y-%m-%d}'.format(today) 
'Log_2015-01-11' 

Да, это уже 11-м в моем часовом поясе. :-)

+0

Странно, я первая ошибка была опечаткой, когда Я публиковал это, я переключил формат на то, что вы написали, и он отлично работал, спасибо. – user4441204