作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在 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', '']
似乎有一个错误 exec 命令替换了解释器退出后关闭终端 session 的 shell。这是第一个 bash。bash
关于python - 如何在 Python 中获取操作系统的 argv[0](而不是 sys.argv[0])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867761/
我是一名优秀的程序员,十分优秀!