Sim, isso é algo que você pode fazer no Python. Demonstrarei com alguns pequenos trechos e links para a documentação que ficará aquém de uma solução completa em favor de capacitá-lo com os recursos de que você precisa para juntar as peças.
Primeiro, se você quiser carregar um arquivo CSV linha por linha e escrever para um segundo, é assim que você faria:
>>> import csv
>>> with open('eggs.csv', newline='') as in and open('omellette.csv', 'w') as out:
... r = csv.reader(in)
... w = csv.writer(out)
... for row in r:
... print(', '.join(row)) # print unmodified
... row[0] = ipToNum(row[0])
... row[1] = ipToNum(row[1])
... print(', '.join(row)) # print modified
... w.writerow(row)
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam
O original no qual este exemplo foi baseado e informações adicionais sobre os recursos CSV integrados do python podem ser encontrados aqui:
Você provavelmente precisará fazer ajustes dependendo da formatação exata do seu arquivo CSV específico. Agora, para converter endereços IP em números, você pode fazer algo como o seguinte:
import socket, struct
def ipToNum(ip):
"convert ipv4/6 string to long integer"
return struct.unpack('>L',socket.inet_pton(ip))[0]
def numToDottedip(n):
"convert long int to ipv4/6"
return socket.inet_ntop(struct.pack('>L',n))
Este exemplo foi adaptado do que encontrei aqui:
Você terá que modificá-lo
Além disso, se você quiser saber mais sobre os módulos socket e struct, veja a documentação:
Não é necessário dividir o arquivo porque o objeto% CS_de% do CSV retornará apenas uma linha por vez, em vez de ler o arquivo inteiro de uma só vez. Claro, você provavelmente também quer fazer alguma coisa com esses números assim que os tiver lido, mas, como você não especificou, vou descobrir isso para você.
Observe também que não tentei nada deste código. Vale a pena repetir aqui na forma de uma metáfora: estou tentando ensiná-lo a pescar em vez de apenas dar-lhe peixe. É de seu interesse tomar este conselho e lutar para que ele funcione sozinho, já que seria o primeiro passo para ser um programador.