Печать списка Python по вертикали в текстовом файле - PullRequest
0 голосов
/ 14 марта 2020

Это, наверное, глупый вопрос. Я искал форумы здесь для решения, но я не могу реализовать это здесь в моем коде. Я попробовал метод .join, а также + '\ n', но безуспешно. Если все идет хорошо, ничего не меняется и, что еще хуже, он полностью ломается. Код в вопросе ниже. Цель состоит в том, чтобы окончательный вывод текста в текстовом файле был вертикальным, а не горизонтальным и перемешанным. Спасибо всем заранее. У меня также есть подобный код, который я успешно распечатал так, как я хотел, но я не могу воспроизвести его здесь. Был бы рад предоставить, если это необходимо, но это просто с инструкциями print вне for для l oop, и l oop вызывает переменную l oop для печати. Довольно простая настройка.

import ipaddress  
import random 
import os

os.chdir('C:/Users/User/OneDrive/Desktop/')

network = ipaddress.ip_network('192.0.7.0/24')
network_list = list(network.hosts())

ip_network_list = []
with open ('IP Addresses.txt', 'r') as file:
    ip_network_list = file.readlines()
ip_network_list = [x.strip() for x in ip_network_list]

variable = random.randint(1,20)

interesting_IPs = []
for x in range (0,variable):
    randomly = random.randint(0,len(ip_network_list)-1)
    ipaddr = ipaddress.ip_address(ip_network_list[randomly])
    if ipaddr in network_list and ip_network_list[randomly] not in interesting_IPs:
        network_list.remove(ipaddr)
        ip_network_list.pop(randomly)
        interesting_IPs.append(ipaddr)

with open ('Interesting IPs.txt', 'w') as file:
    print ('The following are the interesting IPs:')
    for x in range (len(interesting_IPs)):
        print (interesting_IPs[x])
        file.write(str(interesting_IPs[x]))

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Вам трудно помочь, потому что без вашего входного файла (C:\Users\User\OneDrive\Desktop\IP Addresses.txt) мы не можем быть уверены, что ваш код делает то, что должен.

Но, исходя из предоставленного кода, вот мой попытка:

import ipaddress  
import random 
import os

os.chdir('C:/Users/User/OneDrive/Desktop/')

network = ipaddress.ip_network('192.0.7.0/24')
network_list = set(network.hosts())

with open ('IP Addresses.txt') as input_file:
    ip_network_list = {x.strip() for x in input_file}

sample_size = random.randint(1, min(20, len(ip_network_list)))
random_networks = {ipaddress.ip_address(x)
                   for x in random.sample(ip_network_list, sample_size)}

interesting_IPs = random_networks & network_list

with open ('Interesting IPs.txt', 'w') as output_file:
    output_text = "\n".join(str(x) for x in interesting_IPs)
    print ('The following are the interesting IPs:')
    print(output_text)
    output_file.write(output_text)

Это то, что вы хотели сделать?

0 голосов
/ 14 марта 2020

Похоже, вы просто хотите напечатать IP-адреса в файл, а не просто в консоль. Используйте аргумент файла ключевого слова print.

with open ('Interesting IPs.txt', 'w') as file:
    print ('The following are the interesting IPs:')
    for ip in interesting_IPs:
        print(ip)
        print(str(ip), file=file)
...