从脚本中完全独立地运行命令

时间:2013-09-14 22:10:40

标签: python bash subprocess

我最近遇到过一些情况,我希望完全独立地启动命令,然后在不同的进程中编写脚本,相当于将其键入终端,或者更具体地将命令写入.sh或.desktop和双击它。我的要求是:

  • 我可以在不关闭应用程序的情况下关闭python窗口。
  • python窗口不显示应用程序中的stdout(您不希望在CLI中出现随机文本),也不需要它!

我尝试过的事情:

  • os.system等待。
  • subprocess.call等待。
  • subprocess.Popen启动一个关闭父进程的子进程(duh),从而退出应用程序

基本上你可以在网上找到所有这些! 如果它真的归结为它我可以启动.sh(或Windows的.bat),但这感觉就像一个廉价的黑客,而不是这样做的方式。

3 个答案:

答案 0 :(得分:1)

如果你要放置一个&从os.system调用命令后,那会不起作用?例如:

import os
os.system( "google-chrome & disown " )

答案 1 :(得分:1)

import subprocess
import os
with open(os.devnull, 'w') as f:
    proc = subprocess.Popen(command, shell=True, stdout=f, stderr=f)

答案 2 :(得分:1)

使用fork和exec生成子进程“UNIX方式”。这是Python中一个简单的shell示例。

import os

prompt = '$ '
while True:
    cmds = input(prompt).split()
    if len(cmds):
        if (os.fork() == 0):
            # Child process
            os.execv(cmds[0], cmds)
        else:
            # Parent process
            # (Hint: You don't have to wait, you can just exit here.)
            os.wait()