Nano Hash - криптовалюты, майнинг, программирование

Как создать имя файла с текущей датой и временем в python при выполнении запроса

Когда я запускаю свой запрос ниже, он создает файл с именем «mycsvfile». Однако есть ли способ добавить текущую дату и метку времени при создании файла CSV? Например, если я сейчас запущу этот запрос, файл должен называться mycsvfile20171012 — 10:00:00 (примерно так).

Может ли кто-нибудь отредактировать мой код и показать мне, как это сделать, пожалуйста?

Мой код:

from elasticsearch import Elasticsearch
import csv

es = Elasticsearch(["9200"])

# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
                {
                    "_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
                    "query": {
                        "bool": {
                            "should": [
                                {"wildcard": {"CN": "TEST1"}}

                            ]
                        }
                    }
}, size=10)



header_names = { 'DTDT': 'DATE', 'TRDT': 'TIME', ...}

with open('mycsvfile.csv', 'w') as f:  # Just use 'w' mode in 3.x
    header_present  = False
    for doc in res['hits']['hits']:
        my_dict = doc['_source'] 
        if not header_present:
            w = csv.DictWriter(f, my_dict.keys())
            w.writerow(header_names)  # will write DATE, TIME, ... in correct place
            header_present = True


        w.writerow(my_dict)

Заранее спасибо!



Ответы:


1

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

csv_file = 'myfile_' + str(datetime.now().strftime('%Y_%m_%d_%H_%M_%S')) + '.csv'

Используйте дату и время, как показано ниже:

from elasticsearch import Elasticsearch
import csv

es = Elasticsearch(["9200"])

# Replace the following Query with your own Elastic Search Query
res = es.search(index="search", body=
                {
                    "_source": ["DTDT", "TRDT", "SPLE", "RPLE"],
                    "query": {
                        "bool": {
                            "should": [
                                {"wildcard": {"CN": "TEST1"}}

                            ]
                        }
                    }
}, size=10)

from datetime import datetime
import os

file_path = <PASS YOUR FILE HERE>

csv_file = 'myfile_' + str(datetime.now().strftime('%Y_%m_%d_%H_%M_%S')) + '.csv'

csv_file_full = os.path.join(file_path, os.sep, csv_file)

header_names = { 'DTDT': 'DATE', 'TRDT': 'TIME', ...}

with open(csv_file_full, 'w') as f:  # Just use 'w' mode in 3.x
    header_present  = False
    for doc in res['hits']['hits']:
        my_dict = doc['_source']
        if not header_present:
            w = csv.DictWriter(f, my_dict.keys())
            w.writerow(header_names)  # will write DATE, TIME, ... in correct place
            header_present = True


        w.writerow(my_dict)
12.10.2017
  • Привет, Динеш, я получаю следующую ошибку, когда использую ваш метод - Traceback (последний последний вызов): файл C:/Users/.PyCharmCE2017.2/config/scratches/test1.py, строка 28, в «модуле» с open(csv_file, 'w') as f: # Просто используйте режим 'w' в 3.x OSError: [Errno 22] Недопустимый аргумент: 'myfile_2017-10-12_10:31:12.csv' 12.10.2017
  • спасибо динеш! это сработало, но мне просто интересно, есть ли другой способ отформатировать имя файла. например сейчас формат - mycsvfile2017-10-12_10_35_13. Есть ли способ получить mycsvfile2017-10-12_10:35:13 12.10.2017
  • @DineshPundkar: голосование против было за недопустимое имя файла и отсутствие объяснения, но вы исправили первое, поэтому голосование против удалено. 12.10.2017
  • @Rich - лучше использовать подчеркивание в имени файла, чем любой другой специальный символ, поскольку он широко распространен 12.10.2017
  • @Dniesh, спасибо, что снова помог мне! Я ценю это! вы можете увидеть больше постов от меня в ближайшее время ха-ха! Благодарность 12.10.2017
  • @Dniesh, как я могу указать, где я хочу сохранить файл в обновленном коде, который вы мне только что дали? например, если я хочу поместить этот файл на свой рабочий стол... как бы я это сделал. будет ли это похоже на path='....' ? 12.10.2017
  • когда я использую обновленный код и ввожу свой путь, например, file_path = 'C:/Users/Rich/Desktop' - код запускается, но не отображается на моем рабочем столе. Любые идеи? 12.10.2017
  • Давайте продолжим это обсуждение в чате. 12.10.2017

  • 2

    Да, вы можете сделать так: Однако «:» не поддерживается в именах файлов, поэтому 20171010–10.00.00

    >>> import time
    >>> fname = lambda : "mycsvfile{}.csv".format(time.strftime("%Y%m%d-%H.%M.%S"))
    >>> 
    >>> fname()
    'mycsvfile20171012-17.24.59.csv'
    
    >>> with open(fname()) as f:
    >>>    pass    
    
    12.10.2017
  • где бы я поместил это в свой код? код покажите пожалуйста 12.10.2017
  • вы помещаете его туда, где вы открываете файл 12.10.2017
  • @Silencer, вы должны добавить .csv в формат и показать ему пример. 12.10.2017
  • Хорошо, я изменил его. 12.10.2017

  • 3

    Имейте переменную для имени файла как file_name и используйте datetime.now()

    from datetime import datetime
    file_name = 'mycsvfile' + str(datetime.now()) + '.csv'
    
    12.10.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..