Python脚本阅读TXT并创建新的

时间:2017-12-04 19:21:06

标签: python python-2.7

我有这个脚本用于创建'acl'以将所有服务器的IP添加到squid config

file = open("ip.txt", "r")
ip_list = [line for line in file]

for acl, tcp in zip(ip_list[::2], ip_list[1::2]):
    print "acl ip" + str(ip_list.index(acl) + 1) + " myip " + acl.strip()
    print  "tcp_outgoing_address " + tcp.strip() + " ip" + str(ip_list.index(acl) + 1)

我的问题是,当脚本从ip.txt读取IP时,我需要输入相同IP的2倍,因此我需要在最终粘贴中使用相同的IP 2次。

我的朋友告诉我创建双循环,但我不知道该怎么做。

ip.txt看起来像这样

1.1.1.1
2.2.2.2
3.3.3.3

最终粘贴应该看起来像这样

acl ip1 myip 1.1.1.1
tcp_outgoing_address 1.1.1.1 ip1
acl ip2 myip 2.2.2.2
tcp_outgoing_address 2.2.2.2 ip2
acl ip3 myip 3.3.3.3
tcp_outgoing_address 3.3.3.3 ip3
acl ip4 myip 4.4.4.4
tcp_outgoing_address 4.4.4.4 ip4

2 个答案:

答案 0 :(得分:1)

有一种更简单的方法,没有zip()index()的开销:

file = open("ip.txt", "r")

for index, line in enumerate(file):
    print("acl ip" + str(index + 1) + " myip " + line.strip())
    print("tcp_outgoing_address " + line.strip() + " ip" + str(index + 1))

甚至更好(我认为):

file = open("ip.txt", "r")

tpl = """acl ip{index} myip {ip}
tcp_outgoing_address {ip} ip {index}"""

for index, line in enumerate(file):
    print(tpl.format(index=index, ip=line.strip()))

,输出与您请求的输出相同:

  

acl ip1 myip 1.1.1.1
  tcp_outgoing_address 1.1.1.1 ip1
  acl ip2 myip 2.2.2.2
  tcp_outgoing_address 2.2.2.2 ip2
  acl ip3 myip 3.3.3.3
  tcp_outgoing_address 3.3.3.3 ip3

答案 1 :(得分:0)

我也用来自用户的输入并保存到TXT

file1 = open("iplist.txt","w") 

ip = raw_input("Enter IP list:").split(" ")

tpl = """acl ip{index} myip {ip}
tcp_outgoing_address {ip} ip{index}
"""

for index, line in enumerate(ip):
    file1.write(tpl.format(index=index, ip=line.strip()))