Redirecting stdio from a command in os.system() in Python

前端 未结 4 604
一向
一向 2020-11-30 10:36

Usually I can change stdout in Python by changing the value of sys.stdout. However, this only seems to affect print statements. So, is there any

相关标签:
4条回答
  • 2020-11-30 11:01

    On a unix system, you can redirect stderr and stdout to /dev/null as part of the command itself.

    os.system(cmd + "> /dev/null 2>&1")
    
    0 讨论(0)
  • 2020-11-30 11:13

    If you want to completely eliminate the console that launches with the python program, you can save it with the .pyw extension.

    I may be misunderstanding the question, though.

    0 讨论(0)
  • 2020-11-30 11:23

    Redirect stderr as well as stdout.

    0 讨论(0)
  • 2020-11-30 11:28

    You could consider running the program via subprocess.Popen, with subprocess.PIPE communication, and then shove that output where ever you would like, but as is, os.system just runs the command, and nothing else.

    from subprocess import Popen, PIPE
    
    p = Popen(['command', 'and', 'args'], stdout=PIPE, stderr=PIPE, stdin=PIPE)
    
    output = p.stdout.read()
    p.stdin.write(input)
    

    Much more flexible in my opinion. You might want to look at the full documentation: Python Subprocess module

    0 讨论(0)
提交回复
热议问题