一次管道一个文件python

时间:2015-08-21 11:19:56

标签: python iteration

我有超过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。转换第一个文件后仍然停止。有人可以帮忙吗?

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