gpt4 book ai didi

python - 为什么 basename 返回编译后的文件名?

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:40 28 4
gpt4 key购买 nike

运行 os.path.basename(__file__) 有时给我的文件名是 foo.py,但有时它会给出 foo.pyc。我知道pyc是编译后的文件,编译后可能每次都使用它。我只是对为什么 basename 返回 pyc 文件名感到困惑?那是正常的吗?其次,如何让它始终返回未编译的文件名或不带扩展名?

最佳答案

在 Python 2 中,__file__ 反射(reflect)了为模块 * 实际加载的文件。导入模块时,Python 将首先尝试定位 .pyc 文件,如果找到,将使用该文件名,否则将是 .py 文件.

可能如果 __file__ 在解释器下一次 运行时指向一个 .py会发现它加载了一个 .pyc 文件,因为 Python 会尝试创建一个缓存文件(如果可以的话)。另请注意,可能 .py 源文件;一些项目仅以 .pyc 文件的形式分发。最后但同样重要的是,Python 从不为顶级脚本创建 .pyc 文件。

生成.py 源文件文件名的一种安全方法是简单地从末尾去掉c;你也可以包含一个 d 来处理 .pyd 文件(优化的字节码,目前只剥离断言):

sourcefile = __file__.rstrip('cd')

请检查文件是否确实存在!


* Python 3 更改了缓存字节码文件的存储位置,如果有源文件路径,__file__ 将使用源文件路径,即使 .pyc 文件存在。

关于python - 为什么 basename 返回编译后的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36692362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com