首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中将数据追加到文件中时出现重复数据

在python中将数据追加到文件中时出现重复数据
EN

Stack Overflow用户
提问于 2020-12-16 04:50:53
回答 1查看 50关注 0票数 0

我正在做一个错误处理的python脚本,如果i=j,那么data会创建新的结果,但如果i != j,它会将错误数据保存到file.However中,因为错误处理是在循环函数中(for i in data / for j in types),保存在文件中的错误数据会被多次复制,如下面的结果所示。

代码:

代码语言:javascript
复制
with open(INPUT_PATH) as z:
    data = json.load(z)
    for i in data:
        if i['family']:
            if i['type']:
                for j in types:
                    if i['type'] == j:  
                        with morpfw.request_factory(setting) as request:
                            col=request.get_collection("data")
                            
                            item = col.create({"name":i["family"],"type":i["type"]})
                    
                    else:
                        with open('report.log', 'a') as l:
                            l.write(datetime +  i['name'] + "," + i['family'] + "," + i['type'] + "- invalid type")
        else:
            with open('report.log', 'a') as l:
                l.write(datetime  + i['name'] + "," + "," + i['type'] + "- No family name")

结果(尝试将此结果复制到文件中以查看重复模式):

代码语言:javascript
复制
16-Dec-2020 (04:42:14.687834)Downloader.Wowick16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Trojan.W32.Vigorf16-Dec-2020 (04:42:14.687834)Downloader.Zirchap16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 (04:42:14.687834)test-malware16-Dec-2020 

我应该如何修复错误处理,使其不会重复数据?

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 05:10:46

我不确定这是否是你想要的,但如果我理解你的问题,只要做一些小的重构和一些修改,这应该是可以工作的:

代码语言:javascript
复制
with open(INPUT_PATH) as z:
    data = json.load(z)

    for i in data:
        if not i.get("family"):
             with open('report.log', 'a') as l:
                l.write(datetime  + i['name'] + "," + "," + i['type'] + "- No family name")
            continue

        if i.get("type") in types:
            for j in types:
                if i['type'] == j:  
                    with morpfw.request_factory(setting) as request:
                        col=request.get_collection("data")
                        
                        item = col.create({"name":i["family"],"type":i["type"]})
            
        else:
            with open('report.log', 'a') as l:
                l.write(datetime +  i['name'] + "," + i['family'] + "," + i['type'] + "- invalid type")

作为一个边节点,您的代码是not so readable

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65313493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档