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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file python_run_cmd-0.1.1.tar.gz.

File metadata

  • Download URL: python_run_cmd-0.1.1.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.10 Windows/10

File hashes

Hashes for python_run_cmd-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6cd114c322639689d0d39ba5a18395fa4ab0631172358a9ab26ff5577e829348
MD5 b0611fa3c76cc2a9293df15be5af1ffc
BLAKE2b-256 d46396aaf3cb896b7cf0564d04f4efc3d0cd305dd43dbe4cd7e9e33c35915d83

See more details on using hashes here.

File details

Details for the file python_run_cmd-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: python_run_cmd-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.8.10 Windows/10

File hashes

Hashes for python_run_cmd-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d03af62cb95eb492d827bb1cacaa0a22a17e70f5ad6d9599b1951b67df2e1d4a
MD5 22cbe51f3be0723bd2b1bdeb94eb977e
BLAKE2b-256 85126b6f303a860cb2fcf6990d365c7c25ac74fc1915610e5a6b23846c8eb74a

See more details on using hashes here.

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