我尝试创建一个为我的数组生成3个变量的函数,这样我就可以在我将创建的任何其他函数中调用它。
第一个代码是:
details = open('a.txt').readlines()
for x in details:
host = x.split()[0]
user = x.split()[1]
passwd = x.split()[2]
print host + " --> " + user + " --> " + passwd
所以输出是:
python b.py
192.168.1.1 - >用户 - >密码
192.168.1.2 - >用户 - >密码
现在,如果我创建多个函数,我必须使用与我创建的函数相同的代码吗?然后我决定创建函数来从a.txt加载这些细节
现在,这就是:
def load_data():
global details,host,user,passwd
details = open('a.txt').readlines()
host = [x.split()[0] for x in details]
user = [x.split()[1] for x in details]
passwd = [x.split()[2] for x in details]
很好,现在让我们在另一个函数中调用load_data并执行实际函数:
def execute():
load_data()
print host
输出:
python b.py
['192.168.1.1','192.168.1.2']
我不明白为什么如果我在另一个函数中调用它并执行它,foreach(如在PHP中)不起作用?
输出必须是:
192.168.1.1
192.168.1.2
请有人帮帮我吗? (我是Python的初学者,所以请慢慢来。)
谢谢!
答案 0 :(得分:0)
您需要遍历host
,username
和password
字段才能获得每个单独的值。你只是打印出一个数组。
E.g
def execute():
load_data()
for i in host:
print host
这将在主机上输出新行中的每个值。
如果你想拥有与原始程序完全相同的输出,你可以这样做:
def execute:
load_data()
for i in range(len(host)):
print str(host[i]) + "-->" + str(user[i]) + "-->" + str(passwd[i])
请注意,这假设host
,user
和passwd
都具有相同的长度。
答案 1 :(得分:-1)
我相信代码几乎可以满足您的需求,但输出的格式不是您期望的格式。我们来看看:
host = [x.split()[0] for x in details]
主机将是一个列表。 host [0]将是详细信息[0] [0],主机[1]将是详细信息[1] [0],依此类推。
print host
这将打印'host'变量。你看到“['192.168.1.1','192.168.1.2']”因为主机是一个列表,这就是python打印列表的方式。
要打印您必须执行的所有主机:
for i in host:
print i