[Python]在其他函数中调用的数组函数

时间:2015-10-24 01:55:21

标签: python arrays

我尝试创建一个为我的数组生成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的初学者,所以请慢慢来。)

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要遍历hostusernamepassword字段才能获得每个单独的值。你只是打印出一个数组。

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])

请注意,这假设hostuserpasswd都具有相同的长度。

答案 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