Python for循环通过数组创建JSON文件

时间:2018-04-24 22:15:22

标签: python json

我有代码来创建一个json目标文件,并使其在新文件中打印出来。在这里找到:

# Creates a storage file for the
with open('placeInfo.json', 'w') as outfile:
    json.dump(api.trends_place(id=location_array[1]), outfile)

with open('placeInfo.json', 'r') as handle:
    parsed = json.load(handle)
    prettyFile = json.dumps(parsed, indent=4, sort_keys=True)
    pfFile = json.loads(prettyFile) #use for indexing
    print prettyFile

x = 'number1'
f = open(x + 'newFile.json', 'w')
f.write(prettyFile)

我想要做的是遍历数组(0-17个元素)并使用id=location_array[x]索引数组中的每个位置。

x = 0
while x < len(location_array):
    with open('placeInfo.json', 'w') as outfile:
        json.dump(api.trends_place(id=location_array[x]), outfile)
    with open('placeInfo.json', 'r') as handle:
        parsed = json.load(handle)
        pretty_file = json.dumps(parsed, indent = 4, sort_keys = True)
        print pretty_file
        f = open(x + 'newFile.json', 'w')
        f.write(pretty_file)
    x += 1

第一个代码块返回一个有效的新json文件,但是这个while循环甚至不能识别一个json文件。我在哪里错了?也可以推荐这个代码的简化吗?

1 个答案:

答案 0 :(得分:0)

首先,您不应该使用while循环来实现此用途。

好的方法:

for x, value in enumerate(location_array):
    # Then you can access to the value you want with
    print value
    # Instead of
    print location_array[x]

    # And you still can access to the index
    print x

此外,您应该使用with语法打开所有文件。在您的示例中,您忘记关闭打开的最后一个文件(xnewFile.json)。这很糟糕。使用with语法,您不必担心这一点。

所以我认为这应该有效:

for x, location in enumerate(location_array):
    with open(x + 'newFile.json', 'w') as outfile:
        parsed = api.trends_place(id=location)
        json.dumps(parsed, outfile, indent=4, sort_keys=True)