我有一個文件有幾個IP地址。在txt的4行中有大約900個IP。我希望輸出爲每行1個IP。我怎樣才能做到這一點?基於其他的代碼,我想出了這個室內用,但它無法becasue多個IP單線路:python解析文件的IP地址
import sys
import re
try:
if sys.argv[1:]:
print "File: %s" % (sys.argv[1])
logfile = sys.argv[1]
else:
logfile = raw_input("Please enter a log file to parse, e.g /var/log/secure: ")
try:
file = open(logfile, "r")
ips = []
for text in file.readlines():
text = text.rstrip()
regex = re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})$',text)
if regex is not None and regex not in ips:
ips.append(regex)
for ip in ips:
outfile = open("/tmp/list.txt", "a")
addy = "".join(ip)
if addy is not '':
print "IP: %s" % (addy)
outfile.write(addy)
outfile.write("\n")
finally:
file.close()
outfile.close()
except IOError, (errno, strerror):
print "I/O Error(%s) : %s" % (errno, strerror)
你要找的IPv4地址的規範形式。請注意,即使是IPv4地址,也有其他可接受的形式。例如嘗試http:// 2130706433 /如果您在本地主機端口80上運行HTTP服務器(2130706433 == 0x7f000001 == 127.0.0.1)。當然,如果你控制文件的格式,你不需要擔心這些事情......但是,如果你能夠切實支持IPv6,它將會對你的腳本有前瞻性。 –
're.findall()'總是返回一個列表。它永遠不是'沒有'。 – jfs