调用外部程序
在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#中调用外部程序?