技术求助: Python 启动文件识别

Garasu · 2024-9-15 11:51:25 · 51 次点击
python 的 Sitecustomize 可以在 python 运行前执行一些前置任务, 但是如何获取本次启动 Python 时,运行的是哪个脚本或模块?

比如 Python test.py , 如何在 sitecustomize 中获取 test.py 这个文件名?

sys.argv 似乎接收不到这个文件名。

说起来,除了 python test.py 这种在命令行后跟文件名的启动方式外,还有别的吗?
举报· 51 次点击
登录 注册 站外分享
3 条回复  
so1n 小成 2024-9-15 12:19:05
如果是 3.10+,可以直接调用 sys.orig_argv
vituralfuture 小成 2024-9-15 12:20:50
方法其实很多,参考 https://docs.python.org/3/tutorial/interpreter.html 可以从标准输入读取脚本内容交互式的执行,还可以 python main.py 这样执行脚本文件,还可以使用 python -m xxx 的方式执行脚本,还可以使用 python -c "print('xxx')"这样的形式执行来自命令行参数的脚本内容,甚至可以用 python -i main.py 的形式,执行完 main.py 后进入交互模式

但其实 python 内部并没有这么多区别,参考 python3.10 源码,总共只有四种,分别是执行文件,执行模块,执行来自命令行参数的脚本,执行来自标准输入的脚本
https://github.com/python/cpython/blob/0c5fc27217525c4e40b4064e6979f467540c2fc8/Modules/main.c#L581-L595
NoOneNoBody 小成 2024-9-15 12:46:11
sys.argv[0] 就是啊
返回顶部