如何在Python中获取操作系统的argv [0](不是sys.argv [0])?
问题内容:
我想在Python程序中获取操作系统argv [0]的真实值。Python的sys.argv
[0]不是此值:它是正在执行的Python脚本的名称(有一些例外)。我想要的是一个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模块来获取此值吗?
编辑:
同时要求(但不帮忙,回答)在这里。
问题答案:
在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命令替换了解释程序退出后关闭终端会话的shell。这是第一次。bash