Я хочу изменить имя CSV (в данном случае Example.csv) на конкретное имя: имя даты и времени. У меня есть библиотека с именем from datetime import datetime

Это мое предложение для создания cvsFile:

with open('Example.csv', 'w') as csvFile:

Я хочу, чтобы мой результат был:

20180820.csv
20180821.csv
20180822.csv ... etc

И если я запускаю больше одного раза в один и тот же день, я хочу, чтобы мой результат был:

20180820.csv (First time that I run the script) 
20180821(2).csv (Second time run) 
... etc
0
Anna Castan 20 Авг 2018 в 11:39

5 ответов

Лучший ответ

Я нашел решение:

Только в реальном времени возьмите переменную, а затем объедините ее с .csv (а также я поместил этот вывод csv в определенную папку с именем output). Наконец, я открываю csvFile с именем переменной.

> now = datetime.now().strftime('%Y%m%d-%Hh%M')
> csvname = './output/' + now + '.csv'
> with open(csvname, 'w') as csvFile:

Я не могу сделать вторую часть моей проблемы. Я хочу, чтобы, если я запускаю более одного раза код, имя даты и времени меняются или добавляются (2), (3) ... и т. Д.

0
Anna Castan 20 Авг 2018 в 08:48

Пожалуйста, найдите решение, если вы можете управлять «прогрессивной» переменной, отслеживая файлы. В противном случае вам нужно проверить содержимое диска, и оно может быть более сложным.

import datetime
progressive = 0

today = datetime.date.today()
todaystr = str(today)

rootname = todaystr
progressive += 1
if progressive > 1:
    rootname = todaystr + '_' + str(progressive)

filename = rootname + '.csv'
1
Lorenzo 20 Авг 2018 в 08:52

Что-то вроде этого:

import pandas as pd
import datetime

current_date = datetime.datetime.now()
filename = str(current_date.day)+str(current_date.month)+str(current_date.year)
df.to_csv(str(filename + '.csv'))
1
Alex 20 Авг 2018 в 08:52

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

import datetime
import os

now = datetime.datetime.now().strftime("%y%m%d")
# count the number of files already in the output dir with date (now)
count = len([name for name in os.listdir('./output/') if (os.path.isfile(name) and now in name)])

csv_name = './output/' + now 

if count > 0:
    csv_name = csv_name + "(" + str(count+1) +")"

csv_name = csv_name + ".csv"

with open(csv_name, 'w') as csvFile:
    pass

Удачи.

1
Radan 24 Авг 2018 в 15:24

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

def exists(filename):
    try:
        with open(filename) as f:
            file_exists = True
    except FileNotFoundError:
        file_exists = False
    return file_exists

name = 'some_date.csv'
c = 0
while exists(filename):
    c += 1
    name = 'some_date({}).csv'.format(c)

# do stuff with name
2
WIP 20 Авг 2018 в 09:32
51926983