Python 脚本在第一次迭代后中断

标签 python elementtree

我正在尝试在 python 中执行以下操作。 读取包含用户名、密码、电子邮件地址等的 xml 文件。然后我想遍历密码并尝试在不同的文件中找到它们。如果匹配,则打印用户名和密码。这是我到目前为止所拥有的:

import xml.etree.ElementTree as ET

tag = "multiRef"


tree = ET.parse('user.xml')
pwlist = open('swapped.txt', 'r')

for dataset in tree.iter(tag):
    password = dataset.find("password")
    pw = password.text
    user = dataset.find("username").text
    if pw in pwlist.read():
        print user
        print pw

不幸的是,该脚本仅打印一个结果,并且结束时没有错误或任何内容。我知道,至少必须有 250 个结果...... 为什么在得到一个结果后就停止了?绝对的Python新手,详细的解释将不胜感激!

最佳答案

if pw in pwlist.read() 不应位于循环内。第一次循环时,read() 将返回整个文件。第二次执行时不会返回任何内容,因为您已位于文件末尾。

在循环之前将内容读入列表,然后在循环内引用该列表。

还要考虑模式 with open(...) as f 以确保您正在关闭文件,因为我没有看到显式的 close()。

with open('swapped.txt', 'r') as f:
   pw_list = f.readlines()

for ...

关于Python 脚本在第一次迭代后中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085840/

相关文章:

python - 有效使用Python map

Python tkinter(复制/粘贴不适用于其他语言)

python - 在 Python 3 中对两个列表进行排序时如何忽略任何空格或空格?

python - 无法提取 SessionId

python - 使用 etree 从 xml 标签解析 namespace

python - xml.etree.ElementTree iterparse() 仍在使用大量内存?

python - 检查句子输入中的关键字,然后检查Python中的文本文件

python - 创建稀疏零均值随机矩阵

python - 将 xml 解析为 python 中的 pandas 数据框

python - ElementTree: 'match' 方法的 'find' 参数的语法是什么?