下面的代码仅从外循环中打印第一个用户,并从内循环中打印所有密码。一旦执行完内部程序,程序也将从外部循环退出。
passfile = open("passfile.txt", "r")
userfile = open("userfile.txt", "r")
for user in userfile:
for password in passfile:
print("user: " + user + " password: " + password)
答案 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)
这是假定两个文件的行数相同,并且用户和密码之间具有一对一的关系。