Skip to main content
 首页 » 编程设计

python之Python 脚本是否可以对自身进行 md5 哈希

2025年05月04日14落叶

我希望能够在每次运行时自行散列。这可能无需提供脚本路径吗?我可以看到两种方法来做到这一点。第一种方法是散列源 Python 文本文件。 第二种方式是对编译后的字节码进行哈希处理。

我认为自己会选择选项 2,因此会引发其他几个问题:

  1. 脚本能否确定其编译后的字节码在脚本中的位置?
  2. 我会在一个单独的问题中提出这个问题。

请您参考如下方法:

一个 python 脚本可以找出它自己的路径:

import os 
 
path = os.path.abspath(__file__) 

之后您可以打开源文件并通过hashlib.md5运行它。

一个脚本文件没有编译好的字节码文件;只有模块可以。

请注意,在 Python 2 中,__file__ 路径使用实际加载的文件的扩展名;对于模块,这是 .pyc 或 .pyo 只有当有一个缓存的字节码文件准备好被重用时。如果 Python 必须编译字节码,则它是 .py,要么是因为不存在字节码文件,要么是因为字节码文件已过时。

您必须考虑到您的代码是通过命令行开关调用的,这些开关改变了 Python 加载的字节码;如果给出了 -O 或 -OO 开关,或者设置了 PYTHONOPTIMIZE 环境标志,Python 将加载或编译为 .pyo 文件。