Simple uses for Python subproccess module
Project description
The Single Subprocess usage module.
Author: Moises P. Sena moisespsena@gmail.com
License: MIT
Examples
from singlesp import *
Instantiate
p = Proc('date')
# or
p = Proc(['echo', __file__])
stdout
For set stdout callback, use the > operator.
print(p.read())
# or
print(p.wait().read())
# or
print(p.run().wait().read())
def cb_out(proc):
for line in proc.out:
print("STDOUT: %r" % line)
Proc('date', callbacks=[cb_out]).wait()
def cb_outreader(reader):
for line in reader:
print("STDOUT: %r" % line)
(Proc('date') > cb_outreader).wait()
# or
p = Proc('date') > cb_outreader
p.wait()
buffer
def cb_outreader(reader):
for data in reader(10):
print("STDOUT: %r" % data)
(Proc('date') > cb_outreader).wait()
stderr
For set stderr callback, use the >> operator.
def cb_errreader(reader):
for data in reader:
print("ERR: %r" % data)
(Proc('date') >> cb_outreader).wait()
stdout and stderr callbacks
def cbo(reader):
for data in reader:
print("OUT: %r" % data)
def cbe(reader):
for data in reader:
print("ERR: %r" % data)
(Proc('echo out data;echo err data >&2;') > cbo >> cbe).wait()
callbacks
# async read stdout and stderr
def cb_stdout(proc):
for line in proc.out:
print("STDOUT: %r" % line)
def cb_stderr(proc):
for line in proc.err:
print("STDERR: %r" % line)
Proc('seq 1 3 | while read l; do echo "i= $l"; echo "i in err: $l" >&2; done',
callbacks=[cb_stdout, cb_stderr]).wait()
Many commands async
Proc('echo CMD-1: first command with sleep 1; sleep 1; echo CMD-1: done',
callbacks=[cb_stdout, cb_stderr]).run()
Proc('echo CMD-2: show date; date; echo CMD-2: done',
callbacks=[cb_stdout, cb_stderr]).run()
# wait all callbacks
print("before wait")
wait()
print("done")
Get exit status
p = Proc('date').run().wait()
# or p = Proc('date').wait()
print(p.status)
Pipes
Simple:
(Input(['God ', 'is ', 'Love!!']) | Proc(['cat'])).read()
def cb_stdout(reader):
for line in reader:
print("STDOUT: %r" % line)
p = Proc('seq 1 3') | Proc('grep 2') > cb_stdout
# or p = Proc('seq 1 3').pipe(Proc('grep 2')) > cb_stdout
p.run()
wait()
print(Input(['God ', 'is ', 'Love!!']) | Proc(['cat'])).read()
def gen():
yield 'God '
yield 'is '
yield 'Love!!'
print(Input(gen()) | Proc(['cat'])).read()
print(Commands(['date']) | Proc(['bash'])).read()
print(Commands(['date']) | bash()).read()
print(Commands(['date']) | sh()).read()
wait()
Simple:
p = Proc('seq 1 3') | Proc('grep 2') > cb_stdout
p.run()
wait()
Complex:
def cb_stdout(proc):
for line in proc.out:
print("STDOUT: %r" % line)
def a_stderr(proc):
for line in proc.err:
print("A-STDERR: %r" % line)
def b_stderr(proc):
for line in proc.err:
print("B-STDERR: %r" % line)
p = Proc('echo "[A] error message" >&2;seq 1 3', callbacks=[a_stderr]) | \
Proc('while read l; do echo "i= $l"; echo "[B] i in err: $l" >&2; done',
callbacks=[cb_stdout, b_stderr])
p.run()
wait()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
singlesp-1.0.1.tar.gz
(5.3 kB
view details)
Built Distributions
singlesp-1.0.1-py3.4.egg
(9.8 kB
view details)
singlesp-1.0.1-py2.7.egg
(9.4 kB
view details)
File details
Details for the file singlesp-1.0.1.tar.gz
.
File metadata
- Download URL: singlesp-1.0.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6f899e760979047e64112f53ade9e6c05474a09ff1dd353d0c461dfe7c27cd4 |
|
MD5 | f6f1ee24cfba176b49cf5c44a69c3d08 |
|
BLAKE2b-256 | f2234b2b6646aace8e730fa2b3579cc354586a485167daa658852ea430e6c05f |
File details
Details for the file singlesp-1.0.1-py3.4.egg
.
File metadata
- Download URL: singlesp-1.0.1-py3.4.egg
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4dae8b1101d07b0bde65287f8161a7f7f162c24c3e7fba8961dd294062edf6ac |
|
MD5 | 17b290751705b814eb1a622b25a71772 |
|
BLAKE2b-256 | efd2a4e5acf32b668e04c7ee212c02fafd0fc7cbbbb2042b5222d180e5602da1 |
File details
Details for the file singlesp-1.0.1-py2.7.egg
.
File metadata
- Download URL: singlesp-1.0.1-py2.7.egg
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 710ce5f5f34863873b687bbe84d05593880963dba7d953e5d231a36d82059417 |
|
MD5 | 8349262d7823aafeccf5533d792b58f5 |
|
BLAKE2b-256 | 3b46484a30fa5d8740532d585e3961151e7b9bf21e3ab4e7378ddce13c5f8bbb |