我有超过10000个json文件,我必须将其转换为进一步处理。我使用以下代码:
import json
import time
import os
import csv
import fnmatch
tweets = []
count = 0
search_folder = ('/Volumes/Transcend/Axiom/IPL/test/')
for root, dirs, files in os.walk(search_folder):
for file in files:
pathname = os.path.join(root, file)
for file in open(pathname):
try:
tweets.append(json.loads(file))
except:
pass
count = count + 1
这只迭代一个文件并停止。我尝试在while True:
之前添加for file in open(pathname):
并且它不会停止,也不会创建csv文件。我想一次读取一个文件,将其转换为csv,然后转到下一个文件。完成转换csv后,我尝试在文件末尾添加count = count + 1
。转换第一个文件后仍然停止。有人可以帮忙吗?
答案 0 :(得分:1)
你的缩进是关闭的;你需要将第二个for
循环放在第一个循环中。
与主要问题分开,您应该使用with
语句打开该文件。此外,您正在重用变量名file
,您不应该使用它,因为它是内置的名称。我还做了一些其他的小编辑。
import json
import os
tweets = []
count = 0
search_folder = '/Volumes/Transcend/Axiom/IPL/test/'
for root, dirs, filenames in os.walk(search_folder):
for filename in filenames:
pathname = os.path.join(root, filename)
with open(pathname, 'r') as infile:
for line in infile:
try:
tweets.append(json.loads(line))
except: # Don't use bare except clauses
pass
count += 1