循环访问文件并删除具有特定 IP 地址的行



我是python的初学者,但我开始了一个导入csv文件并循环访问文件的项目,同时删除了其中具有不可路由IP地址的行。 这是 csv 文件的示例:

md5                                 domain      ip
0001184ebc4a4c8c641074e7d597a373    twitter.com  104.244.42.1

这是我编译的代码,但它不起作用:

with open('orig_file', 'rb') as f, open('new_file', 'wb') as g:
    writer = csv.writer(g)
    for row in csv.reader(f):
        if row in range('192.168.1.0/24'):
            del row[]

我相信,如果我能得到星号工作的界限,我就可以弄清楚我们其余的工作。

任何帮助,不胜感激。

谢谢。

range()

处理IP地址,它仅适用于数字范围:

range(stop) -> range object
range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive)
to stop (exclusive) by step.  range(i, j) produces i, i+1, i+2, ..., j-1.
start defaults to 0, and stop is omitted!  range(4) produces 0, 1, 2, 3.
These are exactly the valid indices for a list of 4 elements.
When step is given, it specifies the increment (or decrement).
Python

3 中的 ipaddress 模块(可以与 pip install ipaddress 一起安装在 Python 2 中(可以完全按照您的要求:

In [7]: import ipaddress
In [8]: ipaddress.ip_address('1.2.3.4') in ipaddress.ip_network('192.168.1.0/24')
Out[8]: False
In [9]: ipaddress.ip_address('192.168.1.1') in ipaddress.ip_network('192.168.1.0/24')
Out[9]: True

这样的事情应该有效:

import ipaddress
with open('orig_file', 'rb') as f, open('new_file', 'wb') as g:
    writer = csv.writer(g)
    for row in csv.reader(f):
        ip = ipaddress.ip_address(row[0])
        if ip in ipaddress.ip_network('192.168.1.0/24'):
            continue
        writer.write(row)

最新更新