在括号内打印循环

时间:2013-12-23 22:28:06

标签: python

我有以下代码:

# IP of servers
a = '11.22.33.44'
b = '55.66.77.88'

# for loop on the servers

for i in (a, b):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connect = s.connect((i, 25))
    banner = s.recv(1024)
    print banner
    users = ['root', 'user' ]
    # for loop on users list
    for user in users:
        s.send('VRFY ', user, + '\r\n')
        result=s.recv(1024)
        print result
        s.close

我似乎无法遍历'root,user'列表并将其打印在s.send()内;我做错了什么?

2 个答案:

答案 0 :(得分:1)

看起来你正在关闭for循环内的套接字。因此,第二次遍历该循环时,套接字将被关闭。

答案 1 :(得分:1)

send收到以下参数:socket.send(string[, flags])(来自docs)。您将错误的参数传递给send - 它的行为与print不同,它假定第二个参数是标志。相反,请执行以下操作:

for i in (a, b):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connect = s.connect((i, 25))
    banner = s.recv(1024)
    print banner
    users = ['root', 'user' ]
    # for loop on users list
    for user in users:
        s.send('VRFY %s\r\n' % (user,))
        result=s.recv(1024)
        print result
    s.close()

另请注意我已使用s.close和缺少的()修复了缩进问题。如果没有括号,close函数将不会执行,但不会生成错误。