Как отсортировать порты с помощью Python
Всем доброго времени суток! Имеется файл .txt со списком
ip:port
178.237.187.66:53389
82.116.48.210:50000
213.184.149.46:60000
109.74.133.46:4455
78.110.245.206:3398
89.109.52.230:1001
88.135.48.69:3398
84.201.142.138:50000
89.250.150.68:50000
109.195.115.45:2020
46.172.46.206:50001
95.80.124.61:43389
46.172.62.46:60000
62.33.157.26:2020
80.243.1.242:63389
212.220.203.147:55555
185.78.29.72:63389
37.195.232.8:4489
178.49.148.75:60000
87.103.201.134:3398
Как мне разделить по портам, в отдельные файы 3398.txt, 4489.txt, и т.д
Ответы (2 шт):
Автор решения: Tehnorobot
→ Ссылка
Если у вас не получится, то могу предложить данное решение:
- Создание файла и его открытие на чтение (в коде я добавил обращение к файлу через переменную
file(можно назвать переменную по-другому)):
with open('file1.txt') as file:
file.read()- читаю содержимое файла,file.read().split('\n')- разделяю строки по символу\nи привожу к списку,далее через
forитерируюсь по списку. Я применилenumerate(), чтобы автоматически получить индекс элемента последовательности. Данная функция позволяет избавиться от необходимости инициировать и обновлять отдельную переменную-счётчик. (k- индекс,i- элемент).
for k, i in enumerate(file.read().split('\n')):
- Так как первая строка в файле -
ip:port, то просто в условии игнорируем первую строку (индексация элементов начинается с 0)
if k != 0:
- Разделяем строку, получаем последний элемент и дописываем
.txt:178.237.187.66:53389->53389->53389.txt
name_file = str(i.split(":")[-1].strip()) + '.txt'
- Создаём файл, именуем его и открываем на запись
file_2 = open(name_file, 'w')
- Записываем в файл первый элемент из списка:
['178.237.187.66', '53389']->'178.237.187.66'и закрываем файл
file_2.write(i.split(':')[0])
file_2.close()
Полный код:
with open('file1.txt') as file:
for k, i in enumerate(file.read().split('\n')):
if k != 0:
name_file = str(i.split(":")[-1].strip()) + '.txt'
file_2 = open(name_file, 'w')
file_2.write(i.split(':')[0])
file_2.close()
Автор решения: SergFSM
→ Ссылка
попробуйте такой вариант (правда нужен pandas):
import pandas as pd
df = pd.read_csv('ports.txt',sep=':') # здесь путь к файлу
for port,ip in df.groupby('port'):
ip.to_csv(f'{port}.txt',sep=':',index=False) # перед {port} укажите путь к папке