Python 脚本在第一次迭代后中断
Python script breaks after first iteration
我正尝试在 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() 将 return 整个文件。第二次通过它将return 什么都没有,因为你在文件末尾。
在循环之前将内容读入列表,然后在循环内引用列表。
还要考虑模式 with open(...) as f
以确保您正在关闭文件,因为我没有看到明确的 close()。
with open('swapped.txt', 'r') as f:
pw_list = f.readlines()
for ...
错误是您在每次迭代时都调用了 read。一次读取后,您必须调用 .seek(0)
来重置指针。然而,这并不是最好的解决方案,因此您可能想尝试这样的事情:
import xml.etree.ElementTree as ET
tag = "multiRef"
tree = ET.parse('user.xml')
with open('swapped.txt', 'r') as fin:
pwlist = fin.read()
for dataset in tree.iter(tag):
password = dataset.find("password")
pw = password.text
user = dataset.find("username").text
if pw in pwlist:
print user
print pw
这样你只读取一次文件然后关闭它(通过使用 context manager). You can find more information on working with files in Python here.
我正尝试在 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() 将 return 整个文件。第二次通过它将return 什么都没有,因为你在文件末尾。
在循环之前将内容读入列表,然后在循环内引用列表。
还要考虑模式 with open(...) as f
以确保您正在关闭文件,因为我没有看到明确的 close()。
with open('swapped.txt', 'r') as f:
pw_list = f.readlines()
for ...
错误是您在每次迭代时都调用了 read。一次读取后,您必须调用 .seek(0)
来重置指针。然而,这并不是最好的解决方案,因此您可能想尝试这样的事情:
import xml.etree.ElementTree as ET
tag = "multiRef"
tree = ET.parse('user.xml')
with open('swapped.txt', 'r') as fin:
pwlist = fin.read()
for dataset in tree.iter(tag):
password = dataset.find("password")
pw = password.text
user = dataset.find("username").text
if pw in pwlist:
print user
print pw
这样你只读取一次文件然后关闭它(通过使用 context manager). You can find more information on working with files in Python here.