Python 用迭代器嵌套迭代两个文件,最外层迭代只执行一次,里层正常

2017-04-19 09:44:49 +08:00
 UnixCRoot

写一个简单的密码测试工具,一个 user 文件,一个 pwd 文件,然后迭代 user 里面嵌套迭代 pwd ,结果 user 只迭代了一行, pwd 迭代正常,这是为啥? 就是 user 那个只迭代了一次就完事了,字典文件都是多行的。 求指点一下 是不是指针问题??

2560 次点击
所在节点    Python
12 条回复
mhycy
2017-04-19 09:46:10 +08:00
你的代码呢?
raptium
2017-04-19 09:49:18 +08:00
因为执行完一次以后,里层的迭代器已经读完了
UnixCRoot
2017-04-19 09:49:23 +08:00
@mhycy 嗯嗯?图不显示么?我再粘一下文本版的 稍等
UnixCRoot
2017-04-19 09:49:44 +08:00
@raptium 对 外层的只迭代一次 这是为何?
raptium
2017-04-19 09:51:07 +08:00
@UnixCRoot 外层迭代了很多次,但是从第二次开始,里层已经是空的了,所以看起来什么都没做
UnixCRoot
2017-04-19 09:51:22 +08:00
```python
def DictAttck(Host,UsernameFile,PasswordFile):
UserHandle = open(UsernameFile)
PwdHandle = open(PasswordFile)
for user in UserHandle:
for pwd in PwdHandle:
print Fore.RED + "[***] " + Style.RESET_ALL + "Try to UserName:%s Password:%s"%(user,pwd)
if chekpassword(Host,user,pwd) == 1:
print Fore.GREEN + "[OK] " + Style.RESET_ALL + "Got password. Username:%s Password:%s" %(user,pwd)
break
```
gdsing
2017-04-19 09:52:29 +08:00
break
UnixCRoot
2017-04-19 09:52:36 +08:00
@raptium 哦哦 谢谢 那么怎么才能让里层从头开始呢?
UnixCRoot
2017-04-19 09:53:08 +08:00
@gdsing 谢谢 不是 break 的事情 注释掉过了
raptium
2017-04-19 09:53:27 +08:00
@UnixCRoot open 写到里面
UnixCRoot
2017-04-19 09:54:33 +08:00
@raptium 感谢~懂了
fds
2017-04-19 15:49:54 +08:00
PwdHandle.seek(0)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/355789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX