如何使用Python检查CSV文件中是否已经存在数据

2024-09-14 11:27:43 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好

我正在尝试编写一个python脚本,从文本文件中提取IP地址,检查CSV文件中是否已经存在IP地址,如果IP地址已经存在,则什么都不做(pass),如果CSV文件中不存在IP地址,则将IP地址追加到CSV文件中。在

我可以将IP地址添加到CSV文件中,但我无法确定如何检查该IP地址是否已存在于该文件中。在

if os.path.isfile('IP_file.txt'):
    logfile = open('IP_file.txt', 'r')
    csv_file = open('csv_file.csv', 'ab')
    for line in logfile:
        if line in csv_file: # This is not working
            pass
        else:
            csv_file.write(line)
    csv_file.close()
    logfile.close()
else:
    print('No file with filename ' logfile 'created')

我也尝试过使用CSV模块,但没有运气。任何帮助都是非常感谢的。在


Tags: 文件csviniptxt脚本closeif
3条回答

保留一个包含唯一提取值的列表或dict:

found_address = []
with open('IP_file.txt', 'r') as logfile:
    with open('csv_file.csv', 'ab') as csv_file:
        for line in logfile:
            if not line in found_address:
                csv_file.write(line)
                found_address.append(line)

CSV只是一种文本格式。逐行阅读,对照你的IP测试每一行。像

ip="192.168.1.1"
for line in csv_file:
    if ip in line:
        found = True
        break

我有点担心你在磁盘上循环文件。可能更好的做法是将文件读入内存(首先在CSV文件中查找所有IP并将其放入一个列表中),然后对照列表进行检查,而不是针对每一行IP文件打开和遍历整个CSV文件。在

您正在打开csv_文件.csv在追加模式ab。然后尝试检查line in csv_file。在附加模式下,文件指针指向文件的结尾。在

相关问题 更多 >