我有两个文本文件“usernames.txt”和“passwords.txt”,我想让它们以特定的顺序打印出来,我有一段代码完全符合我的要求,但我觉得它可以缩短。
with open('passwords.txt','r') as f:
for line in f:
for password in line.split():
with open('usernames.txt','r') as f:
for line in f:
for username in line.split():
print username +":"+ password
这对我来说非常合适,我觉得我可以让它更短!
目前的输出是:
username1:password
username1:password1
username1:password2
username2:password
username2:password1
username2:password2
答案 0 :(得分:3)
不要担心缩短它,通过删除嵌套使其更具可读性。
itertools.product
获取您的组合像这样的东西
import itertools
with open('passwords.txt', 'r') as pf, open('usernames.txt', 'r') as uf:
passwords = [pwd for line in pf for pwd in line.split()]
usernames = [uname for line in uf for uname in line.split()]
for username, password in itertools.product(usernames, passwords):
print("{}: {}".format(username, password)
答案 1 :(得分:-1)
如果我自己这样说的话,不要太短(5对7行)但至少有点可读性:
main.cc, Makefile, README
修改强>
此答案假设您的passwords = open('passwords.txt').readlines()
usernames = open('usernames.txt').readlines()
for p in passwords:
for u in usernames:
print '%s:%s' % (u.strip(), p.strip())
和passwords.txt
每行有一个条目。不是一行包含多个条目。