如何从Python启动命令行命令

10 投票
2 回答
2844 浏览
提问于 2025-04-17 16:22

我在命令行中有一系列命令要执行,这些命令是调用一些工具。具体来说:

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

我似乎搞不清楚(或者找不到明确的说明)怎么写一个Python脚本来发送这些命令。我之前没用过os模块,但我觉得也许应该从这里入手?

2 个回答

1

使用 subprocess 模块。

举个例子:

>>> subprocess.call(["ls", "-l"])
0

>>> subprocess.call("exit 1", shell=True)
1
3

使用subprocess模块,我们可以很方便地执行命令行的指令,并获取执行结果或者判断是否出现了错误:

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

举个例子:

print external_command('ls -l')

重新排列返回值应该没有问题。

撰写回答