我有代码来创建一个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文件。我在哪里错了?也可以推荐这个代码的简化吗?
答案 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)