如何根据时间更新python字典?
How to update python dictionary based on time?
所以我在 python 中遇到的问题是,每次我连接到我的 jira 帐户时,我似乎无法保留我以前的 python 字典值。
逻辑似乎在 for 循环和我分配空字典时失败。除此之外,我确实尝试通过使用几个条件来解决这个问题,但这些方法都没有奏效。
这就是我的意思。
当前代码:
import os
import pandas as pd
from jira.client import JIRA
from datetime import datetime
jira_token = os.getenv(<jira_personal_tokne>)
jira_link = os.getenv(<jira_url>)
jira_server = {"server": jira_link}
auth_jira = JIRA(options=jira_server, token_auth=jira_token)
proj = auth_jira.search_issues("project=<my_project> and 'epic link'='<epic_link_of_interest>'")
plmpgm_dict= {}
for i in proj:
formatted_date = datetime.strptime(i.fields.updated, '%y-%m-%dT%H:%M:%S.%f%z').strftime("%Y-%m-%dT%H:%M:%S")
inner_dict = {}
inner_dict["summary"]=i.fields.summary
inner_dict["description"] = i.fields.description
inner_dict["last_retrieved"] = formatted_date
plmpgm_dict[i.key] inner_dict
if i.key == "<jira issue>":
print(plmpgm_dict)
我得到的输出:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T19:44:15'
}
}
输出我want/expected:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T18:44:15'
},{
'summary':'old summary_values',
'description: ' old description values',
'last_retrieved':'2022-03-11T18:50:15'
}
}
现在,我想知道是否有一种方法可以存储我以前的 python 字典键值对,而不是在我使用python?
实际上,您的问题既不是 Jira 也不是 Python。
当你运行一个程序时,所有变量都从零开始。它是编程逻辑。您需要保存以前的值,所以您只需要将数据保存在某个目的地(文件系统、数据库等)
想法
所以,我们需要保存数据。它是一个 Python dict
所以我们可以将它保存为 JSON
字符串。现在,假设我们将它保存在系统中的 JSON 文件中。当你 运行 程序时,你应该将这个 JSON 文件读入 plmpgm_dict
变量。
您可以使用以下代码进行该操作:
import json
def dict_to_json_file(some_dict, file_name):
fp = open(file_name, 'w+)
fp.write(json.dumps(some_dict))
fp.close()
def json_file_to_dict(file_name):
fp = open(file_name, 'r+)
some_dict = json.loads(fp.read())
fp.close()
return some_dict
算法
在 for
循环之前,您需要使用 plmpgm_dict = json_file_to_dict('dump.json')
.
从文件(如果存在)读入 plmpgm_dict
在 for
循环之后,在代码的末尾,您需要将 dict 转储到 JSON 文件,如 dict_to_json_file(plmpgm_dict, 'dump.json')
所以我在 python 中遇到的问题是,每次我连接到我的 jira 帐户时,我似乎无法保留我以前的 python 字典值。
逻辑似乎在 for 循环和我分配空字典时失败。除此之外,我确实尝试通过使用几个条件来解决这个问题,但这些方法都没有奏效。
这就是我的意思。
当前代码:
import os
import pandas as pd
from jira.client import JIRA
from datetime import datetime
jira_token = os.getenv(<jira_personal_tokne>)
jira_link = os.getenv(<jira_url>)
jira_server = {"server": jira_link}
auth_jira = JIRA(options=jira_server, token_auth=jira_token)
proj = auth_jira.search_issues("project=<my_project> and 'epic link'='<epic_link_of_interest>'")
plmpgm_dict= {}
for i in proj:
formatted_date = datetime.strptime(i.fields.updated, '%y-%m-%dT%H:%M:%S.%f%z').strftime("%Y-%m-%dT%H:%M:%S")
inner_dict = {}
inner_dict["summary"]=i.fields.summary
inner_dict["description"] = i.fields.description
inner_dict["last_retrieved"] = formatted_date
plmpgm_dict[i.key] inner_dict
if i.key == "<jira issue>":
print(plmpgm_dict)
我得到的输出:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T19:44:15'
}
}
输出我want/expected:
{'<jira issue>':{
'summary':'summary_values',
'description: 'description values',
'last_retrieved':'2022-03-11T18:44:15'
},{
'summary':'old summary_values',
'description: ' old description values',
'last_retrieved':'2022-03-11T18:50:15'
}
}
现在,我想知道是否有一种方法可以存储我以前的 python 字典键值对,而不是在我使用python?
实际上,您的问题既不是 Jira 也不是 Python。
当你运行一个程序时,所有变量都从零开始。它是编程逻辑。您需要保存以前的值,所以您只需要将数据保存在某个目的地(文件系统、数据库等)
想法
所以,我们需要保存数据。它是一个 Python dict
所以我们可以将它保存为 JSON
字符串。现在,假设我们将它保存在系统中的 JSON 文件中。当你 运行 程序时,你应该将这个 JSON 文件读入 plmpgm_dict
变量。
您可以使用以下代码进行该操作:
import json
def dict_to_json_file(some_dict, file_name):
fp = open(file_name, 'w+)
fp.write(json.dumps(some_dict))
fp.close()
def json_file_to_dict(file_name):
fp = open(file_name, 'r+)
some_dict = json.loads(fp.read())
fp.close()
return some_dict
算法
在 for
循环之前,您需要使用 plmpgm_dict = json_file_to_dict('dump.json')
.
plmpgm_dict
在 for
循环之后,在代码的末尾,您需要将 dict 转储到 JSON 文件,如 dict_to_json_file(plmpgm_dict, 'dump.json')