как распечатать вывод, возвращаемый функцией в новых строках, используя python?

У меня есть 243607 ips в файле журнала. вывод функции непрерывно отображает уникальные ips, так что я не могу проверить, являются ли выходные идентификаторы уникальными. Поэтому я хочу, чтобы каждый ip печатался в отдельной строке. поскольку я новичок в python, я не могу понять это. есть ли способ сделать это?

Я также хочу, чтобы количество распечатанных ips

def unique_ips(): f = open('epiclogs.txt','r') ips = set(line.split()[0] for line in f: if not line.isspace()) ip = line.split()[0] ips.add(ip) return ips if name__=='__main': print unique_ips() 

3 Solutions collect form web for “как распечатать вывод, возвращаемый функцией в новых строках, используя python?”

Требования не являются полными:

  1. Формат файла журнала неизвестен.
  2. Формат выходного файла (например, отсортированный?)

Мои предположения

  1. IP-адреса расположены в первом столбце
  2. Формат вывода должен быть «[count] [ip address]»

Данные испытаний

 10.1.10.190 http://example.com/t1 404 10.1.10.171 http://example.com/t1 404 10.1.10.180 http://example.com/t2 200 10.1.10.190 http://example.com/t1 404 10.1.11.180 http://example.com/t3 302 

программа

 #!/usr/bin/env python # # Counts the IP addresses of a log file. # # Assumption: the IP address is logged in the first column. # Example line: 10.1.10.190 http://example.com/t1 404 # import sys def extract_ip(line): '''Extracts the IP address from the line. Currently it is assumed, that the IP address is logged in the first column and the columns are space separated.''' return line.split()[0] def increase_count(ip_dict, ip_addr): '''Increases the count of the IP address. If an IP address is not in the given dictionary, it is initially created and the count is set to 1.''' if ip_addr in ip_dict: ip_dict[ip_addr] += 1 else: ip_dict[ip_addr] = 1 def read_ips(infilename): '''Read the IP addresses from the file and store (count) them in a dictionary - returns the dictionary.''' res_dict = {} log_file = file(infilename) for line in log_file: if line.isspace(): continue ip_addr = extract_ip(line) increase_count(res_dict, ip_addr) return res_dict def write_ips(outfilename, ip_dict): '''Write out the count and the IP addresses.''' out_file = file(outfilename, "w") for ip_addr, count in ip_dict.iteritems(): out_file.write("%5d\t%s\n" % (count, ip_addr)) out_file.close() def parse_cmd_line_args(): '''Return the in and out file name. If there are more or less than two parameters, an error is logged in the program is exited.''' if len(sys.argv)!=3: print("Usage: %s [infilename] [outfilename]" % sys.argv[0]) sys.exit(1) return sys.argv[1], sys.argv[2] def main(): infilename, outfilename = parse_cmd_line_args() ip_dict = read_ips(infilename) write_ips(outfilename, ip_dict) if __name__ == "__main__": main() 

Комментарий

Мне нравятся небольшие функции – каждый из них выполняет одну вещь. ИМХО делает программу более понятной.

Havn't проверил ваш код работает или нет, но добавил к нему новые строки, которые могут выполнить вашу задачу.

попробуй это,

 def unique_ips(): f = open('epiclogs.txt','r') fout = open('uniqueip.txt','w') # Added ips = set(line.split()[0] for line in f: if not line.isspace()): ip = line.split()[0] ips.add(ip) fout.write("%s\n"%ip) # Added f.close() # Added fout.flush() # Added fout.close() # Added return ips if name__=='__main': print unique_ips() 

unique_ips() возвращает set , что означает, что каждый IP-адрес появляется только один раз. Если вы хотите, чтобы адреса print unique_ips() по очереди в файле, вы можете изменить print unique_ips() образом:

 if __name__== '__main__': f = file('ip_addresses', 'w') for ip in unique_ips(): f.write(ip + '\n') 
  • Поиск сетевых (внешних) IP-адресов с использованием Python
  • Когда установлен виртуальный бокс оракула, Как получить локальный IP-адрес в python
  • IP остается неизменным
  • Настройка параметров сети из Python / Django на машине Linux / Ubuntu
  • Python - ip <-> соответствует подсети?
  • Ошибка IP-камеры Python
  • Необработанные сокеты и sendto в python
  • IP-адрес regex python
  • Python - лучший язык программирования в мире.