我想做的是,我希望能够打印出n次等待文件夹中有多少个json文件,同时为每个json打印所有这些数据,但它只应添加到old_list一次。
我编码的代码如下:
old_list = ['Hello', 'How', 'Are', 'You']
new_list = ['Im', 'Fine', 'Today', 'You']
while True:
if new_list not in old_list:
directory = os.fsencode('./slack')
for counters, file in enumerate(os.listdir(directory)):
filename = os.fsdecode(file)
if filename.endswith(".json"):
with open('./slack/' + filename) as slackAttachment:
data = json.loads(slackAttachment.read())
data_list = []
data["attachments"][0]["footer"] = str(
data["attachments"][0]["footer"] + ' | ' + datetime.now().strftime(
'%Y-%m-%d [%H:%M:%S.%f')[:-3] + "]")
# -------------------------------------------------------------------------
print(data)
old_list.append(new_list)
我现在遇到的问题是它要添加到列表中n次,具体取决于我拥有多少个json文件,我想制作的是它应该打印出所有json,但仅添加到列表中一次而不是n次。
在这种情况下,我的问题是:我怎么能只添加一次列表,但仍然能够打印出所有这些json?
答案 0 :(得分:1)
问题是您的while True
导致代码不停地打印输出。此外,if new_list not in old_list:
不是比较两个列表的正确方法:
old_list = ['Hello', 'How', 'Are', 'You']
new_list = ['Im', 'Fine', 'Today', 'You']
data_list = []
directory = os.fsencode('./slack')
for newLst in new_list:
if newLst in old_list:
for counters, file in enumerate(os.listdir(directory)):
filename = os.fsdecode(file)
if filename.endswith(".json"):
with open('./slack/' + filename) as slackAttachment:
data = json.loads(slackAttachment.read())
data["attachments"][0]["footer"] = str(
data["attachments"][0]["footer"] + ' | ' + datetime.now().strftime(
'%Y-%m-%d [%H:%M:%S.%f')[:-3] + "]")
print(data)
data_list.append(newLst) # make sure to what you're ganna append
请注意,我假设您的其余代码运行良好。