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

标签 python

我想在 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/

相关文章:

javascript - 在 JavaScript 中保护 Azure API 剩余调用

python - 在 Python 中加载 JSON 文件而 key 中没有 'u

python - 无法使用 readlines() 方法从文本文件中读取

Python:如何找出列表中句子的出现次数

python - 检查具有不同行数的两个不同数据框,然后应用操作

python - 比较两个字符串列表,而不考虑python中的顺序和大小写

python - Keras 的功能类似于 Torch 中的 View

python - PIP/Python 软件包安装到错误的 PATH

python - 对 pandas 中的交叉表数据进行排序以获得更多集群热图

python - 带有 GPU 的 Theano。在上下文中使用 cuDNN 版本 5110 无