[英]Create multiple files based on user input in python
我是python的新手,我写了一个代码,为我的应用程序创建配置文件。 我已经创建了适用于2个IP的代码,但是可能会发生用户可能输入更多IP的情况,并且IP的每次增加都会更改配置文件。 有身份验证服务器,它们只能是1或2。
我正在通过文件名“ inputfile”将输入传递给python代码,如下所示:
EnterIp_list: ip_1 ip_2
authentication_server: as_1 as_2
以下是最终配置文件的创建方式:
configfile1: configfile2:
App_ip: ip_1 App_ip: ip_2
app_number: 1 app_number: 2
authen_server: as_1 authen_server: as_2
以下是python3代码的外观:
def createconfig(filename, app_ip, app_number, authen_server)
with open(filename, 'w') as inf:
inf.write("App_ip=" + app_ip + "\n")
inf.write("app_numbber=" + app_number)
inf.write("authen_server="+ authen_server)
with open("inputfile") as f:
for line in f:
if EnterIP_list in line:
a= line.split("=")
b = a[1].split()
if authentiation_server in line:
c= line.split("=")
d=c[1].split()
createconfig(configfile1, b[0], 1, d[0])
createconfig(configfile2, b[1], 2, d[1])
用户可以自由输入所需数量的IP。 有人可以提出一些建议,使代码更通用,更健壮,以便对任何数量的输入ip都适用吗? 随着每个新IP的添加,app_number的值也会增加。
始终会有两个身份验证服务器,它们轮流访问,例如,第三个应用程序ip将再次与“ as_1”关联。
您只需要遍历b中的ip列表,请注意,当前代码仅适用于“ inputfile”的最后一行。 只要只有一行,那就可以了。
with open("inputfile") as f:
for line in f:
a= line.split("=")
b = a[1].split()
app_count = 1
for ip in b:
createconfig("configfile%s" % app_count , ip, app_count)
app_count += 1
编辑:解决方案已更新有关您的代码更改。
with open("inputfile") as f:
for line in f:
if EnterIP_list in line:
ips = line.split("=")[1].split()
if authentiation_server in line:
auth_servers = line.split("=")[1].split()
app_count = 1
for ip, auth_server in zip(ips, auth_servers):
createconfig("configfile%s" % app_count , ip, app_count, auth_server)
app_count += 1
在不修改大量代码的情况下,这样做的一种不太好的方法是删除最后两个createconfig()调用,而一旦拥有b,则按如下所示循环执行:
with open("inputfile") as f:
for line in f:
a= line.split("=")
b = a[1].split()
for app_number in b:
createconfig("configfile{}".format(app_number), b[app_number], app_number)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.