运行查询时如何在 python 中创建包含当前日期和时间的文件名

Ric*_*ich 4 python python-3.x python-3.4 python-3.5 python-3.6

当我运行下面的查询时,它会创建一个名为 \xe2\x80\x98mycsvfile\xe2\x80\x99 的文件。但是,有没有办法在创建 CSV 文件时添加当前日期和时间戳?例如,如果我现在运行此查询,则文件应命名为 mycsvfile20171012 \xe2\x80\x93 10:00:00 (类似的名称)。

\n\n

有人可以编辑我的代码并告诉我如何做到这一点吗?

\n\n

我的代码:

\n\n
from elasticsearch import Elasticsearch\nimport csv\n\nes = Elasticsearch(["9200"])\n\n# Replace the following Query with your own Elastic Search Query\nres = es.search(index="search", body=\n                {\n                    "_source": ["DTDT", "TRDT", "SPLE", "RPLE"],\n                    "query": {\n                        "bool": {\n                            "should": [\n                                {"wildcard": {"CN": "TEST1"}}\n\n                            ]\n                        }\n                    }\n}, size=10)\n\n\n\nheader_names = { \'DTDT\': \'DATE\', \'TRDT\': \'TIME\', ...}\n\nwith open(\'mycsvfile.csv\', \'w\') as f:  # Just use \'w\' mode in 3.x\n    header_present  = False\n    for doc in res[\'hits\'][\'hits\']:\n        my_dict = doc[\'_source\'] \n        if not header_present:\n            w = csv.DictWriter(f, my_dict.keys())\n            w.writerow(header_names)  # will write DATE, TIME, ... in correct place\n            header_present = True\n\n\n        w.writerow(my_dict)\n
Run Code Online (Sandbox Code Playgroud)\n\n

先感谢您!

\n

Din*_*kar 6

在文件名中使用下划线比任何其他特殊字符更好,因为它被广泛接受因此构建文件名如下:

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

使用日期时间如下:

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)
Run Code Online (Sandbox Code Playgroud)


Kin*_*t 金 5

是的,您可以这样做:\n但是文件名中不支持“:”,因此 20171010\xe2\x80\x9310.00.00

\n\n
>>> import time\n>>> fname = lambda : "mycsvfile{}.csv".format(time.strftime("%Y%m%d-%H.%M.%S"))\n>>> \n>>> fname()\n\'mycsvfile20171012-17.24.59.csv\'\n\n>>> with open(fname()) as f:\n>>>    pass    \n
Run Code Online (Sandbox Code Playgroud)\n