Установите желаемый формат даты для имени файла в Python - PullRequest
1 голос
/ 01 октября 2019

Я хочу указать дату нужного формата в качестве имени файла следующим образом;

Во время [2019-10-01 09:00 ~ 2019-10-02 08:59:59] Сохранитьданные до 191001-09.txt

Я понятия не имею об этом. Я мог только следовать простому коду. Пожалуйста, дайте мне знать, как это исправить:

def timeStamped (fname, fmt = '19% m% d-% H {fname} '):
    return datetime.datetime.now (). strftime (fmt) .format (fname = fname)
with open (timeStamped ('. txt'), 'a') as f_last:
    f_last.write ('data')

1 Ответ

0 голосов
/ 01 октября 2019

Вопрос : условное имя файла из datetime.now()

  • Импорт необходимых объектов
    from datetime import datetime, timedelta
    
  • Определить функцию, которая получает желаемое имя файла от объекта datetime.date:

    def fname_from_date(date):
        # Rule  09:00:00 ~ day + 1 08:59:59 
        midnight = date.replace(hour=0, minute=0, second=0)
        begin_of_day = date.replace(hour=9, minute=0, second=0)
        end_of_day = date.replace(hour=8, minute=59, second=59)
    
        # Are we between 'midnight' and 'end_of_day'
        if date >= midnight and date <= end_of_day:
            date = date - timedelta(days=1)
            print('\tNext day -1: {}'.format(date))
    
        # 191001-09.txt
        fname = date.strftime('%Y%m%d-09')
        return fname
    
  • Проверка функции def fname_from_date(... со статическими датами.
    Для этого требуется создать datetime.date объект из datestr.
    for datestr in ['2019-10-01 09:00:00', 
                    '2019-10-01 11:01:11', 
                    '2019-10-02 07:07:07', 
                    '2019-10-02 08:59:59']:
        date = datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S')
        print(date)
        fname = '{}.txt'.format(fname_from_date(date))
        print('\t{}'.format(fname))
    

    Выход :

    2019-10-01 09:00:00
        20191001-09.txt
    2019-10-01 11:01:11
        20191001-09.txt
    2019-10-02 07:07:07
        Next day -1: 2019-10-01 07:07:07
        20191001-09.txt
    2019-10-02 08:59:59
        Next day -1: 2019-10-01 08:59:59
        20191001-09.txt
    

Использование :

fname = '{}.txt'.format(fname_from_date(datetime.now()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...