我有这个脚本
for row in c:
res = subprocess.Popen('bgpq3 -4 {} -m 24 -l {}'.format(row[5],row[2]), shell=True, universal_newlines=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout, stderr = res.communicate()
lines = []
for line in stdout.split('\n')[1:10]:
lines.append(line)
print(lines)
这将导致:
['ip prefix-list 12414 permit 5.57.248.0/21']
['ip prefix-list 12414 permit 5.57.248.0/21', 'ip prefix-list 12414 permit 5.199.144.0/20']
['ip prefix-list 12414 permit 5.57.248.0/21', 'ip prefix-list 12414 permit 5.199.144.0/20', 'ip prefix-list 12414 permit 5.206.208.0/20']
我正在使用append方法制作一个大列表,但是我得到了很多列表! 有想法吗?
答案 0 :(得分:1)
您可以看到正确的列表是最后打印的列表。这是因为您将print
函数放到了循环中,并会在所有循环中打印出当前列表
迭代,因此,从for
正文中删除打印内容并将其置于循环之外。
for line in stdout.split('\n')[1:10]:
lines.append(line)
print(lines)