Sep-08-2022, 09:13 AM
(Sep-08-2022, 08:30 AM)DeaD_EyE Wrote: Use a set, if the order is not required.
from io import StringIO from ipaddress import ip_address, IPv4Address # fake file for test ip1_content = StringIO( """192.168.0.1 192.168.0.2 192.168.0.3 2001:4800:7819:104:be76:4eff:fe04:5819 192.168.0.4 192.168.0.5 192.168.0.6""" ) ip2_content = StringIO( """ 192.168.0.799 192.168.0.900 192.168.0.3 2001:4800:7819:104:be76:4eff:fe04:5819 192.168.0.1000 192.168.0.5 192.168.0.83""" ) def make_ipv4_set(file_like): results = set() for line in map(str.strip, file_like): try: addr = ip_address(line) except ValueError: continue if isinstance(addr, IPv4Address): results.add(addr) # or if you want str # results.add(line) return results results = make_ipv4_set(ip1_content) - make_ipv4_set(ip2_content) print(results)
Works like charm but is it possible to import the first and second file because the first file ip1_content = StringIO conatins 1.4 million ip and second file contains 700,253.
Output
{IPv4Address('192.168.0.799'), IPv4Address('192.168.0.800'), IPv4Address('192.168.0.900'), IPv4Address('1.117.250.1000')}If we can output the file as newIPlist.txt instead of displaying it in terminal would be just great.
Only Ip address needed not this text IPv4Address possible?