我要计算前一,两或三天的日期。我有一个执行此操作的函数,但是我希望能够根据存在的先前JSON文件计算正确的先前日期。
我知道我将需要某种条件语句,但是我不确定如何处理该语句。然后,此变量将在for循环中使用,以读取前一天文件和当前日期文件中的内容以进行一些分析。如果前一天的文件不可用,则需要将其递增一个,直到找到文件为止。
我的代码如下:
def previous_day():
previous_day = str(datetime.date.today() - datetime.timedelta(1))
return str(previous_day)
def current_day():
current_day = str(datetime.datetime.today().strftime('%Y-%m-%d'))
return str(current_day)
with open(currentday + '.json', 'r') as f, open(previousday + '.json', 'r') as g:
for cd, pd in zip(f, g):
data_current = json.loads(cd)
data_previous = json.loads(pd)
答案 0 :(得分:2)
如果您只是想查找最新的两个文件进行比较,我认为您根本不需要理会日期计算,因为您的文件名只是ISO日期字符串。您可以只获取目录中的所有文件,对其进行排序,然后以所需的任何顺序进行比较。
从目录中获取所有文件名
import os
files = os.listdir('/home/foo/bar')
# if there are unneeded files or subdirectories, filter the resulting list
按日期降序排列文件
files = ['2018-11-23.json', '2018-11-29.json', '2018-11-25.json']
files.sort(key=lambda f: f.split('.')[0], reverse=True)
# sort output: ['2018-11-29.json', '2018-11-25.json', '2018-11-23.json']
打开最新和最近的文件进行比较
with open(files[0], 'r') as latest, open(files[1], 'r') as previous:
# compare files
pass