Skip to main content

Run a command within python

Project description

run-cmd

pytestpythonCode style: blackLicense: MITPyPI version

Run a command within python

Install it

pip install python-run-cmd
# pip install git+https://github.com/ffreemt/run-cmd
# poetry add git+https://github.com/ffreemt/run-cmd
# git clone https://github.com/ffreemt/run-cmd && cd run-cmd

Use it

run_cmd

from python_run_cmd import run_cmd

ret = run_cmd("ls -l")
if ret.returncode:
  print("Failed")
else:
  print("OK")

An exception will be raised when errors occur. This may come handy sometimes.

from python_run_cmd import run_cmd

try:
  ret = run_cmd("lsss -l")
except Exception as exc:
  print(exc)
# 'lsss' is not recognized as an internal
# or external command, operable program or batch file.

Set raise_stderr=False to ignore errors

from python_run_cmd import run_cmd

ret = run_cmd("lsss -l", raise_stderr=False)
if ret.returncode:
  print("Failed")
else:
  print("OK")

run_cmd_async

Simultaneously run several commands:

import asyncio
import webbrowser
from python_run_cmd import run_cmd_async

async def browse_8000():
    webbrowser.open("http://127.0.0.1:8000")

async def main():
  return await asyncio.gather(
    run_cmd_async("ping www.baidu.com"),
    browse_8000(),
    run_cmd_async("python -m http.server"),
  )

asyncio.run(main())

For Python up to 3.10, it can be simplified (it won't work with Python 3.11):

import asyncio
import webbrowser
from python_run_cmd import run_cmd_async

async def browse_8000():
    webbrowser.open("http://127.0.0.1:8000")

asyncio.run(
  asyncio.wait(
    [
    run_cmd_async("ping www.baidu.com"),
    browse_8000(),
    run_cmd_async("python -m http.server"),
    ]
  )
)

Note there is no auxiliary async main function.

run_cmd_stream

Some commands take a long time to complete. If we want to see live stream output (one line at a time), run_cmd_stream can be used.

from python_run_cmd import run_cmd_stream

run_cmd_stream("ping -n 100 baidu.com")

We won't have to wait until all 100 pings to complete to see the output.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_run_cmd-0.1.1.tar.gz (4.8 kB view hashes)

Uploaded Source

Built Distribution

python_run_cmd-0.1.1-py3-none-any.whl (5.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page