python - 是否可以将已编译的 .pyc 文件反编译为 .py 文件?

是否可以从 .py 文件生成的 .pyc 文件中获取一些信息?

最佳答案

尝试工具

Uncompyle6适用于 Python 3.x,但有一些错误,适用于 2.7。

  • 建议开始使用,因为它旨在统一早期的分支并专注于自动化单元测试。 uncompyle6 GitHub page有更多细节。
  • 最适合早期的 3.x 版本,而不是 3.7+ 的最佳选择

如果这不起作用,请尝试 decompyle3 ,Uncompyle6 的一个分支,在 3.7 及更高版本中效果更好(根据 Uncompyle6 的作者)。

如果您仍有问题,请查看 uncompyle6decompyle3 自述文件,它们链接到可能更适合您的代码的其他工具。

限制

您可以取回包含变量名和文档字符串的代码,但不包含注释。

某些代码可能无法成功反编译,尤其是使用异常控制流或更新的 Python 3.x 版本时。这是由于这些反编译器中的错误导致 Python 会随着时间的推移更改其字节码。

改进这些工具

如果需要,请为这些项目提出 GitHub 问题 - 两者都在一系列 Python 版本上运行单元测试套件。

资金显然是对在 uncompyle6decompyle3 中支持更新的 Python 版本(3.7 及更高版本)的限制 - 发送捐款会有所帮助。

防止将来丢失代码

见 this answer了解一些可能适用于您的编辑器或 IDE 的技巧,包括 VS Code 和 PyCharm。

https://stackoverflow.com/questions/5287253/

相关文章:

linux - 无法通过 HTTPS 在 Linux 上克隆 github 存储库

python - 使用字典计算列表中的项目

python - 在python中将整数转换为二进制

python - 将字符串打印为十六进制字节

c - 如何设置 cron 作业以每小时运行一次可执行文件?

c - 如何让 backtrace()/backtrace_symbols() 打印函数名?

python - 使用 pip 安装 SciPy 和 NumPy

python - 为什么 (1 in [1,0] == True) 评估为 False?

linux - 如何为 bash 命令设置多个环境变量

linux - 如何通过命令行将图像转换为灰度?