Python-如何打开n个不同的json文件,然后追加。一旦

时间:2018-11-30 14:02:02

标签: python json for-loop

我想做的是,我希望能够打印出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?

1 个答案:

答案 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

请注意,我假设您的其余代码运行良好。