
本文将介绍如何在Python库函数中获取调用它的主文件名。 假设你有一个库文件,并且多个不同的Python脚本都导入并调用了这个库文件中的一个函数。 你希望这个函数能够返回调用它的主脚本的文件名。
import sys, ntpath
def get_my_name():
return ntpath.basename(sys.argv[0])代码解释:
- sys.argv: sys.argv 是一个包含命令行参数的列表。 sys.argv[0] 始终是正在执行的脚本的路径。
- ntpath.basename(): ntpath.basename() 函数从路径中提取基本文件名。 即使在非 Windows 平台上,ntpath 也能正确处理路径,并提取文件名。
使用示例:
假设我们有三个文件: A.py, B.py 和 C.py。
A.py:
import C print(C.get_my_name())
B.py:
拍客竞拍系统是一款免费竞拍网站建设软件,任何个人可以下载使用,但未经商业授权不能进行商业活动,程序源代码开源,任何个人和企业可以进行二次开发,但不能以出售和盈利为目的。安装方法,将www文件夹里面的所有文件上传至虚拟主机,在浏览器执行http://你的域名/install.php或者直接导入数据库文件执行。本次升级优化了一下内容1,程序和模板完美分离。2,优化了安装文件。3,后台增加模板切换功能。
import C print(C.get_my_name())
C.py:
import sys, ntpath
def get_my_name():
return ntpath.basename(sys.argv[0])当我们运行 A.py 时,输出将会是 A.py。 当我们运行 B.py 时,输出将会是 B.py。
注意事项:
- 这种方法依赖于 sys.argv[0] 的值。 在某些特殊情况下,例如脚本是通过其他方式启动的,sys.argv[0] 可能不会包含预期的脚本路径。
- 如果脚本是通过绝对路径运行的,ntpath.basename() 将会返回包含 .py 扩展名的完整文件名。 如果你想要去除 .py 扩展名,可以使用字符串操作,例如 ntpath.basename(sys.argv[0]).replace(".py", "")。
- 在某些环境中,sys.argv[0] 可能包含完整的路径信息。如果只需要文件名,始终使用 ntpath.basename() 来提取。
总结:
使用 sys.argv[0] 和 ntpath.basename() 是一种简单有效的方法,可以在Python库函数中获取调用者的主文件名。 这种方法避免了复杂的源码查找,并且能够适用于不同的调用场景。 记住,根据实际情况处理 sys.argv[0] 的值,并根据需要进行适当的字符串处理,以获得期望的文件名。









