首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按一天、两天或三天计算上一个日期

按一天、两天或三天计算上一个日期
EN

Stack Overflow用户
提问于 2018-12-01 23:10:26
回答 1查看 54关注 0票数 0

我正在按一天、两天或三天计算上一个日期。我有一个函数可以做到这一点,但我希望能够根据先前存在的JSON文件计算出正确的先前日期。

我知道我需要某种条件语句,但我不确定如何处理。然后,这个变量将在for循环中使用,以读取前一天的文件和当天的文件的内容,以执行一些分析。如果前一天的文件不可用,则需要递增1,直到找到文件为止。

我的代码如下:

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-12-02 04:43:43

我认为如果您只是尝试查找最新的2个文件以进行比较,那么您根本不需要费心计算日期,因为您的文件名只是ISO日期字符串。您可以只获取目录中的所有文件,对它们进行排序,然后按您想要的任何顺序进行比较。

从目录中获取所有文件名

代码语言:javascript
运行
复制
import os

files = os.listdir('/home/foo/bar')
# if there are unneeded files or subdirectories, filter the resulting list

按日期降序对文件进行排序

代码语言:javascript
运行
复制
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']

打开最新文件和下一个最新文件进行比较

代码语言:javascript
运行
复制
with open(files[0], 'r') as latest, open(files[1], 'r') as previous:
    # compare files
    pass
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53572128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档