我想获得键入的完整命令行.
这个:
" ".join(sys.argv[:])
在这里不起作用(删除双引号).此外,我不想重新加入被解析和拆分的东西.
有任何想法吗?
当显式调用脚本时python,它会argv被删除,因此这argv[0]是运行脚本的路径.如果被调用为python foo/bar.py甚至如此,就是这种情况python -m foo.bar.
我需要一种方法来恢复原始argv(即收到的原始python).不幸的是,它并不像前面那样容易sys.executable,sys.argv因为python foo/bar.py它不同于python -m foo.bar(隐式的PYTHONPATH不同,这可能是至关重要的,具体取决于你的模块结构).
更具体地说,在python foo/bar.py some other args和的情况下python -m foo.bar some other args,我正在寻找恢复['python', 'foo/bar.py', 'some', 'other', 'args']和['python', '-m', 'foo.bar', 'some', 'other', 'args']分别.
我知道之前的问题:
但是这些似乎误解了炮弹是如何运作的,而答案却反映了这一点.我没有兴趣在解开外壳的工作(如评估壳VAR和功能都很好),我只是想在原来的argv给予python.
我发现的唯一解决方案是使用/proc/<PID>/cmdline:
import os
with open("/proc/{}/cmdline".format(os.getpid()), 'rb') as f:
original_argv …Run Code Online (Sandbox Code Playgroud)