gpt4 book ai didi

python - 如何在 Python 中获取操作系统的 argv[0](而不是 sys.argv[0])?

转载 作者:太空狗 更新时间:2023-10-29 20:24:41 24 4
gpt4 key购买 nike

我想在 Python 程序中获取操作系统的 argv[0] 的真实值。 Python 的 sys.argv[0] 不是这个值:它是正在执行的 Python 脚本的名称(有一些异常(exception))。我想要的是一个 foo.py,它将在执行时打印“somestring”

exec -a "somestring" python foo.py

简单的程序

#! /usr/bin/env python
import sys
print sys.argv[0]

将打印“foo.py”。

有谁知道如何获得这个? Python C API 中有一些相关函数:例如Py_GetProgramName。但这似乎并没有在任何地方暴露给 Python 世界。 Py_GetProgramFullPath 在 argv[0] 之外工作,但会尝试获取 Python 解释器的路径。 (该值被传播到 sys.executable,因此该变量也不正确。)我真的必须编写 C 模块来获取该值吗?

编辑: 也被问到(但没有得到有用的回答)here .

最佳答案

在 Linux 上你可以阅读 /proc/self/cmdline 的内容:

#!/usr/bin/env python
import sys
print sys.argv[0]

f = open('/proc/self/cmdline', 'rb')
cmdline = f.read()
f.close()

print repr(cmdline.split('\x00'))

输出是:

$ bash
$ exec -a "somestring" python foo.py
foo.py
['somestring', 'foo.py', '']

bash 似乎有一个错误 exec 命令替换了解释器退出后关闭终端 session 的 shell。这是第一个 bash。

关于python - 如何在 Python 中获取操作系统的 argv[0](而不是 sys.argv[0])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867761/

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