Python Timeout Using Os.system
So, I know everyone is going to tell me to use the subprocess module, but I can't use that for the project I am working on since Piping simply doesn't want to work with wxpython a
Solution 1:
you can correct your code:
os.system('cmd')
extra explain about subprocess:
import subprocess
ls_output = subprocess.check_output(['ls'])
Running External Command
To run an external command without interacting with it, such as one would do with os.system()
, Use the call()
function.
import subprocess
# Simple command
subprocess.call('ls -l', shell=True)
$ python replace_os_system.py
total 16
-rw-r--r-- 1 root8085 root8085 0 Jul 1 13:27 __init__.py
-rw-r--r-- 1 root8085 root8085 1316 Jul 1 13:27 replace_os_system.py
-rw-r--r-- 1 root8085 root8085 1167 Jul 1 13:27 replace_os_system.py~
# run cmd
import subprocess
l = subprocess.call(['cmd'])
Extra example: Make a system call three different ways:
#! /usr/bin/env python
import subprocess
# Use a sequence of args
return_code = subprocess.call(["echo", "hello sequence"])
# Set shell=true so we can use a simple string for the command
return_code = subprocess.call("echo hello string", shell=True)
# subprocess.call() is equivalent to using subprocess.Popen() and wait()
proc = subprocess.Popen("echo hello popen", shell=True)
return_code = proc.wait() # wait for process to finish so we can get the return code
Control stderr and stdout:
#! /usr/bin/env python
import subprocess
# Put stderr and stdout into pipes
proc = subprocess.Popen("echo hello stdout; echo hello stderr >&2", \
shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
return_code = proc.wait()
# Read from pipes
for line in proc.stdout:
print("stdout: " + line.rstrip())
for line in proc.stderr:
print("stderr: " + line.rstrip())
Solution 2:
Has answered similar question in another post.
key point is:
use subprocess.check_output
to instead os.system
, for subprocess.check_output support timeout
:
subprocess.check_output(args, *, stdin=None, stderr=None, shell=False, cwd=None, encoding=None, errors=None, universal_newlines=None, timeout=None, text=None, **other_popen_kwargs)
Post a Comment for "Python Timeout Using Os.system"