我有一个users.txt和password.txt,我需要迭代这两个文件
users.txt示例:
password.txt
的示例在我的循环中,只需打印第一个用户" root"和所有的密码,但不 打印其他用户,这是我的代码:
fu = open("/home/dskato/diccionarios/user.txt", "r")
fp = open("/home/dskato/diccionarios/pasword.txt", "r")
for user in fu.readlines():
for password in fp.readlines():
print "Username: "+user+" Password: "+password
这是输出,但不会迭代其他用户 它出了什么问题?
用户名:root 密码:123456
用户名:root 密码:12345678
用户名:root 密码:12345678
用户名:root 密码:1234
用户名:root 密码:传递
用户名:root 密码:密码
我需要这个输出示例:
答案 0 :(得分:3)
您在外部循环的第一次迭代中使用内部循环迭代所有密码。在外循环的第二次迭代中,没有更多的密码要迭代(fp
当前位置在文件的末尾)。
您可以在每次用户迭代后fp.seek(0)
重置fp
:
for user in fu:
for password in fp:
print "Username: " + user.rstrip('\n') + " Password: " + password.rstrip('\n')
fp.seek(0)
或者您可以将密码读入列表:
passwords = list(fp)
for user in fu:
for password in passwords:
print "Username: " + user.rstrip('\n') + " Password: " + password.rstrip('\n')
这里有文件访问和内存使用之间的权衡。
答案 1 :(得分:0)
你有一个嵌套的for循环,它为每个用户(在外部循环中)读取密码(在内部循环中)。
现在发生了什么,你的外部循环读取第一个用户(root),内部读取所有密码,并与root一起打印。
当您的外部循环尝试处理第二个用户时,您的密码文件已经到达结尾,没有任何内容被打印。
您需要分别读取这些文件的行,将其存储在数组中并稍后打印。
更好的是,只需使用粘贴:https://unix.stackexchange.com/questions/234208/combining-several-files-into-a-single-csv