Nexus File Manager
v2.0
🏠
Dashboard
⚡
System
🌐
›
opt
›
alt
›
python27
›
share
›
doc
›
alt-python27-EasyProcess
Quick:
⬆️ Parent
🌐 Root
🏠 Home
🌍 WWW
📁 Temp
⚙️ Etc
📤 Upload
📁 Create
⚡ WordPress Admin
🔄 Refresh
✏️ README.rst
← Back
EasyProcess is an easy to use python subprocess interface. Links: * home: https://github.com/ponty/EasyProcess * documentation: http://EasyProcess.readthedocs.org * PYPI: https://pypi.python.org/pypi/EasyProcess |Travis| |Coveralls| |Latest Version| |Supported Python versions| |License| |Downloads| |Code Health| |Documentation| Features: - layer on top of subprocess_ module - easy to start, stop programs - easy to get standard output/error, return code of programs - command can be list or string - logging - timeout - unit-tests - cross-platform, development on linux - global config file with program aliases - shell is not supported - pipes are not supported - stdout/stderr is set only after the subprocess has finished - stop() does not kill whole subprocess tree - unicode support - supported python versions: 2.6, 2.7, 3.3, 3.4, 3.5 - Method chaining_ Similar projects: * execute (http://pypi.python.org/pypi/execute) * commandwrapper (http://pypi.python.org/pypi/commandwrapper) * extcmd (http://pypi.python.org/pypi/extcmd) * sh (https://github.com/amoffat/sh) * envoy (https://github.com/kennethreitz/envoy) * plumbum (https://github.com/tomerfiliba/plumbum) Basic usage =========== >>> from easyprocess import EasyProcess >>> EasyProcess('python --version').call().stderr u'Python 2.6.6' Installation ============ General ------- * install pip_ * install the program:: # as root pip install EasyProcess Ubuntu 14.04 ------------ :: sudo apt-get install python-pip sudo pip install EasyProcess Uninstall --------- :: # as root pip uninstall EasyProcess Usage ===== Simple example -------------- Example program:: #-- include('examples/hello.py')--# from easyprocess import EasyProcess import sys s = EasyProcess([sys.executable, '-c', 'print "hello"']).call().stdout print(s) #-# Output:: #-- sh('python -m easyprocess.examples.hello')--# hello #-# General ------- The command can be a string list or a concatenated string:: #-- include('examples/cmd.py')--# from easyprocess import EasyProcess print('-- Run program, wait for it to complete, get stdout (command is string):') s=EasyProcess('python -c "print 3"').call().stdout print(s) print('-- Run program, wait for it to complete, get stdout (command is list):') s=EasyProcess(['python','-c','print 3']).call().stdout print(s) print('-- Run program, wait for it to complete, get stderr:') s=EasyProcess('python --version').call().stderr print(s) print('-- Run program, wait for it to complete, get return code:') s=EasyProcess('python --version').call().return_code print(s) print('-- Run program, wait 1 second, stop it, get stdout:') s=EasyProcess('ping localhost').start().sleep(1).stop().stdout print(s) #-# Output:: #-- sh('python -m easyprocess.examples.cmd')--# -- Run program, wait for it to complete, get stdout (command is string): 3 -- Run program, wait for it to complete, get stdout (command is list): 3 -- Run program, wait for it to complete, get stderr: Python 2.7.6 -- Run program, wait for it to complete, get return code: 0 -- Run program, wait 1 second, stop it, get stdout: PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.017 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms #-# Shell commands -------------- Shell commands are not supported. .. warning:: ``echo`` is a shell command on Windows (there is no echo.exe), but it is a program on Linux return_code ----------- :attr:`EasyProcess.return_code` is None until :func:`EasyProcess.stop` or :func:`EasyProcess.wait` is called. With ---- By using :keyword:`with` statement the process is started and stopped automatically:: from easyprocess import EasyProcess with EasyProcess('ping 127.0.0.1') as proc: # start() # communicate with proc pass # stopped Equivalent with:: from easyprocess import EasyProcess proc = EasyProcess('ping 127.0.0.1').start() try: # communicate with proc pass finally: proc.stop() Timeout ------- This was implemented with "daemon thread". "The entire Python program exits when only daemon threads are left." http://docs.python.org/library/threading.html:: #-- include('examples/timeout.py')--# from easyprocess import EasyProcess s = EasyProcess('ping localhost').call(timeout=2).stdout print(s) #-# Output:: #-- sh('python -m easyprocess.examples.timeout')--# PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.018 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.025 ms #-# Replacing existing functions ---------------------------- Replacing os.system:: retcode = os.system("ls -l") ==> p = EasyProcess("ls -l").call() retcode = p.return_code print p.stdout Replacing subprocess.call:: retcode = subprocess.call(["ls", "-l"]) ==> p = EasyProcess(["ls", "-l"]).call() retcode = p.return_code print p.stdout .. _pip: http://pip.openplans.org/ .. _subprocess: http://docs.python.org/library/subprocess.html .. _chaining: https://en.wikipedia.org/wiki/Method_chaining#Python .. |Travis| image:: http://img.shields.io/travis/ponty/EasyProcess.svg :target: https://travis-ci.org/ponty/EasyProcess/ .. |Coveralls| image:: http://img.shields.io/coveralls/ponty/EasyProcess/master.svg :target: https://coveralls.io/r/ponty/EasyProcess/ .. |Latest Version| image:: https://img.shields.io/pypi/v/EasyProcess.svg :target: https://pypi.python.org/pypi/EasyProcess/ .. |Supported Python versions| image:: https://img.shields.io/pypi/pyversions/EasyProcess.svg :target: https://pypi.python.org/pypi/EasyProcess/ .. |License| image:: https://img.shields.io/pypi/l/EasyProcess.svg :target: https://pypi.python.org/pypi/EasyProcess/ .. |Downloads| image:: https://img.shields.io/pypi/dm/EasyProcess.svg :target: https://pypi.python.org/pypi/EasyProcess/ .. |Code Health| image:: https://landscape.io/github/ponty/EasyProcess/master/landscape.svg?style=flat :target: https://landscape.io/github/ponty/EasyProcess/master .. |Documentation| image:: https://readthedocs.org/projects/pyscreenshot/badge/?version=latest :target: http://easyprocess.readthedocs.org
💻
System Info
Current path
/opt/alt/python27/share/doc/alt-python27-EasyProcess
Contents
1 folders, 2 files
Disk free
100.63 GB
PHP version
8.3.30
🚀
Quick Actions
📍 Script location
🌐 Web root
🗑️ Temp
📁 /opt/alt/python27/share/doc/alt-python27-EasyProcess
⚡ Nexus File Manager • 3 items