外循环仅在Python中执行一次

时间:2019-01-25 06:38:17

标签: python

下面的代码仅从外循环中打印第一个用户,并从内循环中打印所有密码。一旦执行完内部程序,程序也将从外部循环退出。

passfile = open("passfile.txt", "r")
userfile = open("userfile.txt", "r")

for user in userfile:
    for password in passfile:
        print("user: " + user + "   password: " + password)

4 个答案:

答案 0 :(得分:3)

每次迭代都会执行内部循环,无论这是什么。在这种情况下,它将从头到尾读取文件。一旦到达文件末尾,无论外循环迭代多少次,都无法读取更多内容。

如果可以假设其中包含用户密码对,则可以按照建议的here尝试zip

答案 1 :(得分:2)

我认为这是您真正想要的行为,请参阅JónásBalázs的答案以找出问题原因:

编辑:

with open("passfile.txt", "r") as passfile:
    passwords = passfile.readlines()
with open("userfile.txt", "r") as userfile:
    usernames = userfile.readlines()

for user in usernames:
    for password in passwords:
        print("user:", user, "password:", password)

答案 2 :(得分:1)

尝试同时运行两个循环:

userfile = open("userfile.txt", "r")
passfile = open("passfile.txt", "r")

for user, password in zip(userfile, passfile):
    print("user: " + user + "   password: " + password)

答案 3 :(得分:0)

您遇到的问题已由@JónásBalázs描述。如果使用Python 2,请使用izip;如果使用Python 3,请使用zip;这样,您可以在一个循环中同时遍历两个文件。

try:
  from itertools import izip # For Python 2
except ImportError:
  izip = zip # For Python 3

for user, password in izip(open("userfile.txt"), open("passfile.txt")):
  print("User: " + user + "Password: " + password)

这是假定两个文件的行数相同,并且用户和密码之间具有一对一的关系。