【问题标题】:How can i add more json data to a text file in python?如何将更多 json 数据添加到 python 中的文本文件?
【发布时间】:2020-01-13 00:37:48
【问题描述】:

您好,抱歉,这似乎是一个非常糟糕的问题,但是每当我在 python 中创建一个 json txt 文件并写入它时,它只会暂时保存。例如,我有一个 for 循环在用户想要的次数内将文本写入文件。我知道它会执行多次,因为每次执行它时我都有一个计数功能来打印,但是正在写入的文本文件只保存一个循环。所以说我想打印每次循环的数字,我可能会要求它运行 4 次,应该打印的数字是 0、1、2、3,我看到的唯一数字打印到文件中结尾是 3,因为我一直在写我的数据。这是我的代码,因此有人可以帮助我,并且像往常一样非常感谢任何和所有帮助。

    def create_tasks():
        num_tasks = int(num_tasks_entry.get())
        global size
        num = 0
        for num in range(0, num_tasks):
            data = {}
            data['task'] = []
            data['task'].append({
                'profile': profiles_select.get(),
                'task_id': num,
                'product_link': productlink_entry.get(),
                'delay': int(delay_entry.get()),
            })
            num = num + 1
            with open('tasks.txt', 'w', encoding='utf-8') as outfile:
                json.dump(data, outfile, indent=2)

另一个例子,在我的代码中,我希望输出文件是打印用户选择次数的信息。

【问题讨论】:

  • 您在每次循环迭代中都覆盖了同一个文件。
  • @AMC 是的,我怎么能不那样做?
  • 在循环之前只创建一次空的data - 在for-loop 之后只写一次(不在for-loop 内)。在 JSON 中,您不能编写许多单独的字典,因为这将是不正确的 JSON 数据 - 您必须将所有字典编写为一个字典。或者作为一个包含许多字典的列表。
  • 顺便说一句,尽量避免使用全局变量。

标签: python json


【解决方案1】:

你可以这样写你的函数:

    def create_tasks():
        num_tasks = int(num_tasks_entry.get())
        global size
        data = {}
        data['task'] = []
        for num in range(0, num_tasks):
            data['task'].append({
                'profile': profiles_select.get(),
                'task_id': num,
                'product_link': productlink_entry.get(),
                'delay': int(delay_entry.get()),
            })
        with open('tasks.txt', 'w', encoding='utf-8') as outfile:
                json.dump(data, outfile, indent=2)

另外,你为什么要在 for 循环中增加 num

【讨论】:

  • 感谢您。它解决了为什么要覆盖数据,这只是一个简单的愚蠢错误,哈哈。再问你一个问题,我怎样才能将文本保存在该文件中,这样当我关闭并重新打开它时,它不会清除数据,因为我每次打开它时都会调用一个新的文件。
  • @mferraro:我想你是在问这个:stackoverflow.com/questions/4706499/…
  • 谢谢,虽然这不是答案。正如您所看到的,每次我重新打开程序并尝试编写它时,它都会清除文件并覆盖它,因为我每次都将数据初始化为 {}。
  • 哦,我明白了。那么最好的方法是加载文件并读取数据中的信息,然后再次写入......
  • 嘿,谢谢你之前的回答。我在搞乱它,我没有把它做好,有没有可以链接到我的参考资料?也许有人也问过这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
  • 2018-08-25
  • 2016-01-16
  • 2014-03-19
  • 2020-04-04
  • 1970-01-01
相关资源
最近更新 更多