我想将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 :(得分: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)...等。