0

我在一个文件夹里有很多很多文件,我想一个接一个地处理,我需要一个全局字典来记录用户标识符和流量,但是如果我的代码是这样的,当第二个或第三个文件是处理后,最后一个文件的 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"])

由于每个文件都很大,我把它们都合并成一个文件,然后运行脚本处理,电脑过一会就会杀掉进程,我只好一个一个处理

4

2 回答 2

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():
        ....
于 2012-06-13T08:20:57.207 回答
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)
于 2012-06-13T08:14:09.230 回答