> 文章列表 > 调用外部程序

调用外部程序

调用外部程序

在Python中调用外部程序有多种方法,以下是一些常用的方式:

1. os.system

基本使用 :

```python import os exit_code = os.system(\'dir\') # Windows exit_code = os.system(\'ls\') # Linux ```

带参数的命令

```python os.system(\'ping www.google.com\') ```

错误处理 :

```python def run_command(command): status = os.system(command) if status != 0: print(f\"Command failed with exit code: {status}\") return status ```

特点 :

简单直接

返回命令的退出码

无法获取命令输出

阻塞式执行

2. subprocess.run

基本使用 :

```python import subprocess result = subprocess.run([\'ls\', \'-l\'], capture_output=True, text=True) print(result.stdout) ```

错误处理 :

```python try: result = subprocess.run([\'ffmpeg\', \'-i\', \'input.mp4\', \'output.mp4\'], check=True) except subprocess.CalledProcessError as e: print(f\"Command failed with error: {e}\") ```

特点 :

现代化的推荐方式

处理标准输入、输出和错误

更强的进程控制能力

可以捕获命令输出

非阻塞式执行

建议

推荐使用 :`subprocess.run`是现代Python开发中推荐的方式,因为它提供了更强大和灵活的功能,如捕获输出、处理错误、非阻塞执行等。

简单场景 :如果只是简单地执行一个命令并获取退出码,`os.system`也可以满足需求,但它的功能相对有限。

示例

以下是一个使用`subprocess.run`调用外部程序并捕获输出的示例:

```pythonimport subprocesstry: result = subprocess.run([\'ls\', \'-l\'], capture_output=True, text=True, check=True) print(result.stdout)except subprocess.CalledProcessError as e: print(f\"Command failed with error: {e}\")```

这个示例展示了如何使用`subprocess.run`来执行`ls -l`命令,并捕获其输出。如果命令执行失败,会捕获并打印错误信息。

其他小伙伴的相似问题:

如何在Python中调用系统外部程序?

如何在Java中调用外部程序?

如何在C#中调用外部程序?