How to start a command line command from Python

angstrom-linux, linux, python

Solution

With subprocess one can conveniently perform command-line commands and retrieve the output or whether an error occurred:

import subprocess
def external_command(cmd): 
    process = subprocess.Popen(cmd.split(' '),
                           stdout=subprocess.PIPE, 
                           stderr=subprocess.PIPE)

    # wait for the process to terminate
    out, err = process.communicate()
    errcode = process.returncode

    return errcode, out, err

Example:

print external_command('ls -l')

It should be no problem to rearrange the return values.

Problem

I've got a series of commands I'm making from the command line where I call certain utilities. Specifically: ``` root@beaglebone:~# canconfig can0 bitrate 50000 ctrlmode triple-sampling on loopback on root@beaglebone:~# cansend can0 -i 0x10 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 root@beaglebone:~# cansequence can0 -p ``` I can't seem to figure out (or find clear documentation on) how exactly I write a Python script to send these commands. I haven't used the os module before, but suspect maybe that's where I should be looking?

Original source

Related problems