Python os.system without the output

后端 未结 4 1542
醉酒成梦
醉酒成梦 2020-12-16 11:24

I\'m running this:

os.system(\"/etc/init.d/apache2 restart\")

It restarts the webserver, as it should, and like it would if I had run the c

4条回答
  •  星月不相逢
    2020-12-16 11:33

    Avoid os.system() by all means, and use subprocess instead:

    with open(os.devnull, 'wb') as devnull:
        subprocess.check_call(['/etc/init.d/apache2', 'restart'], stdout=devnull, stderr=subprocess.STDOUT)
    

    This is the subprocess equivalent of the /etc/init.d/apache2 restart &> /dev/null.

    There is subprocess.DEVNULL on Python 3.3+:

    #!/usr/bin/env python3
    from subprocess import DEVNULL, STDOUT, check_call
    
    check_call(['/etc/init.d/apache2', 'restart'], stdout=DEVNULL, stderr=STDOUT)
    

提交回复
热议问题