例如,不要使用嵌套循环Python对文件进行再次迭代

2024-09-24 06:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用户.txt以及密码.txt我需要迭代这两个文件

示例用户.txt地址:

  • 管理员
  • 甲骨文
  • 用户

示例密码.txt你知道吗

  • 图尔
  • 罗奥特
  • 管理员
  • 密码

在我的循环只是打印第一个用户“根”和所有的密码,但不要 打印其他用户,这是我的代码:

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 密码:pass

用户名:root 密码:Password

我需要这个输出示例:

  • 根:123456
  • 你知道吗根:密码你知道吗
  • 你知道吗根:toor你知道吗
  • 你知道吗管理员:123456你知道吗
  • 你知道吗管理员:密码你知道吗
  • 你知道吗管理员:toor你知道吗

Tags: 用户txt密码示例homefor管理员root
2条回答

您有一个嵌套for循环,它为每个用户(在外部循环中)读取密码(在内部循环中)。你知道吗

现在发生的情况是,外部循环读取第一个用户(root),内部循环读取所有密码,并将它们与root一起打印。你知道吗

当您的外部循环尝试处理第二个用户时,您的密码文件已经到达末尾,不会打印任何内容。你知道吗

您需要分别读取这些文件的行,将其存储在数组中,稍后再打印。你知道吗

更好的方法是使用粘贴:https://unix.stackexchange.com/questions/234208/combining-several-files-into-a-single-csv

在外循环的第一次迭代中,使用内循环迭代所有密码。在外循环的第二次迭代中,没有要迭代的密码(fp的当前位置在文件的末尾)。你知道吗

您可以在每次用户迭代后^{}重置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')

在文件访问和内存使用之间有一个折衷。你知道吗

相关问题 更多 >