我想在Python程序中获得操作系统的argv [0]的真正价值.Python的sys.argv [0]不是这个值:它是正在执行的Python脚本的名称(有一些例外).我想要的是一个foo.py,它会在执行时打印"somestring"
exec -a "somestring" python foo.py
Run Code Online (Sandbox Code Playgroud)
琐碎的计划
#! /usr/bin/env python
import sys
print sys.argv[0]
Run Code Online (Sandbox Code Playgroud)
将打印"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'))
Run Code Online (Sandbox Code Playgroud)
输出是:
$ bash
$ exec -a "somestring" python foo.py
foo.py
['somestring', 'foo.py', '']
Run Code Online (Sandbox Code Playgroud)
似乎有一个错误 exec命令替换解释器退出后关闭终端会话的shell.那是第一次打击.bash
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |