【新手求助】关于使用pyhon暴力破解zip压缩包密码
https://m.jb51.net/article/197406.htm原帖子
这三句我没看懂
zipFile.extractall(pwd= bytes(password, "utf8" ))
for line in PwdLists.readlines():#挨个挨个的写入密码
Pwd = line.strip('\n')
if __name__ == '__main__':
main()
第一句为什么使用bytes函数?为什么编码是utf8?
第二句是如何实现逐行阅读的?
第三句中的_name_和_main_来自于哪里?
谢谢!
第一句为什么使用bytes函数?为什么编码是utf8?
这里不太熟悉这个模块,但是 bytes 函数是将文本数据转换成对应的二进制数据,这里 utf8 就是采用 utf-8 的编码转换为二进制数据,应该是和文件编码保持一致
第二句是如何实现逐行阅读的?
对文件对象进行 for 循环遍历,默认就是逐行阅读,但是这里是对 PwdLists.readlines() 进行遍历
因为 readlines() 函数是读取文本的一行内容,所以这儿就是将 PwdLists 文件对象读取一行后,对这行的文本内容进行逐个遍历
第三句中的_name_和_main_来自于哪里?
__name__ 是 Python 的全局属性,这里最后代码的作用是:
当这个脚本作为主程序运行时候,会运行 if __name__ == "__main__": 下面的代码块
当这个脚本当作模块导入时候,将不调用 if __name__ == "__main__": 下面的代码块
这里的 main() 如果再正常情况下运行,而没有拿去导入模块,可以把这个代码的 if __name__ == "__main__": 去掉无妨 Twilight6 发表于 2022-5-12 09:50
这里不太熟悉这个模块,但是 bytes 函数是将文本数据转换成对应的二进制数据,这里 utf8 就是采用 utf- ...
谢谢,明白了,但是`_main_`是从哪来的? 还有为什么要用bytes函数让文件编码保持一致? lzymm1 发表于 2022-5-12 10:04
谢谢,明白了,但是`_main_`是从哪来的?
就是 __name__ 属性值,'__main__' 表示当前运行模块
Twilight6 发表于 2022-5-12 10:08
就是 __name__ 属性值,'__main__' 表示当前运行模块
哦哦,为什么要用bytes函数让文件编码保持一致? lzymm1 发表于 2022-5-12 10:31
哦哦,为什么要用bytes函数让文件编码保持一致?
文件编码不同,其字节大小也很可能不同,编码不同会导致编码错误、乱码
lzymm1 发表于 2022-5-12 10:31
哦哦,为什么要用bytes函数让文件编码保持一致?
猜: 模块方法要求必须传bytes类型 Twilight6 发表于 2022-5-12 10:36
文件编码不同,其字节大小也很可能不同,编码不同会导致编码错误、乱码
明白了谢谢 本帖最后由 lzymm1 于 2022-5-12 18:21 编辑
w
页:
[1]