相关疑难解决方法(0)

键入的完整命令行

我想获得键入的完整命令行.

这个:

" ".join(sys.argv[:])

在这里不起作用(删除双引号).此外,我不想重新加入被解析和拆分的东西.

有任何想法吗?

python command-line

31
推荐指数
4
解决办法
5650
查看次数

恢复原始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)

python command-line-arguments python-3.x

10
推荐指数
2
解决办法
255
查看次数