我在文件夹中有很多文件,我想一个接一个地处理它们,我需要有一个全局字典来记录用户标识符和flowcount,但是如果我的代码是这样的话,那么第二个或者处理完第三个文件后,最后一个文件的user_dict将丢失。
因为如果第二个文件中的用户ID与第一个文件中的用户ID相同,那么如果应该分配相同的flowcount而不是新的,那么在逐个打开文件时如何使一个字典保持增长?
for line in fd.readlines():
obj = json.loads(line)
user = obj["host_dst"]["addr"] + '_' + str(obj["host_dst"]["port"])
if user not in user_dict:
user_dict[user] = []
user_dict[user].append(obj["params"]["flowcount"])
由于每个文件的大小非常大,我将它们全部合并为一个文件,然后运行脚本进行处理,计算机将在一段时间后终止进程,我必须逐个处理它们
答案 0 :(得分:4)
您可以在python脚本中打开多个文件,并使用for循环来处理每个文件
for filename in os.listdir(folderpath):
filepath = os.path.join(folderpath, filename)
fd = open(filepath, 'r')
# here is your code
for line in fd.readlines():
....
答案 1 :(得分:0)
您可以随时声明
global user_dict
你的代码中的......但这是最好的方法吗?也许你应该使用一个类:
class FileProcessor(object):
def __init__(self):
self.user_dict = dict()
def process_file(file_name):
....
self.user_dict[]...
然后:
processor = FileProcessor()
for file in files:
processor.process_file(file)