将CSV名称更改为CSV日期时间python

时间:2018-08-20 08:39:50

标签: python csv datetime

我想将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

5 个答案:

答案 0 :(得分:2)

由于您知道如何创建文件名,因此只需检查文件名是否已存在:

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

答案 1 :(得分:1)

类似这样的东西:

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'))

答案 2 :(得分:1)

如果可以管理跟踪文件的“渐进式”变量,请找到解决方案。否则,您需要检查磁盘内容,它可能会更加复杂。

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'

答案 3 :(得分:1)

计算名称中具有相同日期的目录中的文件数,并使用该信息来创建文件名。这是您的两个问题的解决方案。

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

祝你好运。

答案 4 :(得分:0)

我找到了解决方法:

仅实时获取一个变量,然后将其与.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)...等。