Skip to content

Running a Command

In python-process, you can simply run a command like echo using Process class.

from process import Process


def main() -> None:
    process = Process("echo 'Hello, World!'").run()
    print(process.exit_code)  # 66071 True None
    process.join()
    print(process.exit_code)  # 66071 False 0


if __name__ == "__main__":
    main()
import asyncio

from process.asyncio import Process


async def main() -> None:
    process = await Process("echo 'Hello, World!'").run()
    print(process.exit_code)  # 66333 True None
    await process.join()
    print(process.exit_code)  # 66333 False 0


if __name__ == "__main__":
    asyncio.run(main())

Even simpler, you can use Process class as a context manager to handle the execution of the process and to clean up resources automatically:

from process import Process


def main() -> None:
    with Process("echo 'Hello, World!'") as process:
        print(process.id, process.running, process.exit_code)  # 64165 True None
    print(process.id, process.running, process.exit_code)  # 64165 False 0


if __name__ == "__main__":
    main()
import asyncio

from process.asyncio import Process


async def main() -> None:
    async with Process("echo 'Hello, World!'") as process:
        print(process.id, process.running, process.exit_code)  # 64395 True None
    print(process.id, process.running, process.exit_code)  # 64395 False 0


if __name__ == "__main__":
    asyncio.run(main())

If you need to run a command with complex arguments, you can provide them as a list of str or Path.

from pathlib import Path

from process import Process


def main() -> None:
    with Process(["ls", Path.cwd()]) as process:
        print(process.id, process.running, process.exit_code)  # 67129 True None
    print(process.id, process.running, process.exit_code)  # 67129 False 0


if __name__ == "__main__":
    main()
import asyncio
from pathlib import Path

from process.asyncio import Process


async def main() -> None:
    async with Process(["ls", Path.cwd()]) as process:
        print(process.id, process.running, process.exit_code)  # 67381 True None
    print(process.id, process.running, process.exit_code)  # 67381 False 0


if __name__ == "__main__":
    asyncio.run(main())