You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python处理CSV攻击数据时调用count函数出现NameError求助

问题分析与解决

错误根源

你遇到的NameError是因为代码里的Adware(包括前两个案例里的BENIGN、ransomware)根本没被定义成变量。前两个文件能运行完全是巧合——大概率你之前的代码里不小心创建了同名变量,并非正确的文件读取逻辑。

正确的处理方式

不管是哪种CSV文件,都需要先读取文件内容,再进行统计。下面提供两种可行方案:

方案1:直接读取文件内容统计

如果你的CSV文件里整行都是攻击类型(或者目标字符串分散在文件中),可以先读取文件的全部内容,再调用count():

# 处理Adware.csv的示例
file_path = "/content/drive/MyDrive/Colab Notebooks/Adware.csv"
with open(file_path, 'r') as file:
    file_content = file.read()
incidents3 = file_content.count('ADWARE')
print('Number of Adware incidents:', incidents3)
  • 用with语句打开文件是Python的最佳实践,它会自动帮你关闭文件,避免资源泄漏。
  • 先把文件内容读到file_content变量里,再对这个变量调用count()。

方案2:用csv模块规范处理(更适合结构化CSV)

如果你的CSV是标准结构化格式(比如攻击类型在某一列,比如列名是Attack_Type),用csv模块更准确,不会统计到其他列里的同名字符串:

import csv

file_path = "/content/drive/MyDrive/Colab Notebooks/Adware.csv"
incident_count = 0
with open(file_path, 'r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        # 假设攻击类型在名为'Attack_Type'的列,根据你的实际列名修改
        if row['Attack_Type'] == 'ADWARE':
            incident_count +=1
print('Number of Adware incidents:', incident_count)
  • 这种方法会逐行读取CSV,精准统计目标列的攻击类型数量,避免误统计。

统一优化所有文件的统计逻辑

你可以把统计逻辑封装成函数,避免重复代码:

import csv

def count_attack_incidents(file_path, target_type, column_name='Attack_Type'):
    count = 0
    with open(file_path, 'r') as file:
        reader = csv.DictReader(file)
        for row in reader:
            if row[column_name] == target_type:
                count +=1
    return count

# 调用函数统计各个文件
benign_count = count_attack_incidents("/content/drive/MyDrive/Colab Notebooks/Benign.csv", 'BENIGN')
ransomware_count = count_attack_incidents("/content/drive/MyDrive/Colab Notebooks/Ransomware.csv", 'RANSOMWARE')
adware_count = count_attack_incidents("/content/drive/MyDrive/Colab Notebooks/Adware.csv", 'ADWARE')

print(f'Number of Benign incidents: {benign_count}')
print(f'Number of Ransomware incidents: {ransomware_count}')
print(f'Number of Adware incidents: {adware_count}')

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:15:32