subprocess的使用
时间: 2024-02-27 11:04:43 浏览: 17
subprocess是Python中用于创建新进程、连接到子进程并与其进行通信的模块。它提供了比os.system()等更高级别的接口,可以更好地管理子进程的输入、输出和错误流。
下面是subprocess的一些常见用法:
1. 运行命令并等待其完成:
```
import subprocess
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
```
2. 同时获取标准输出和标准错误:
```
import subprocess
result = subprocess.run(['ls', '-l', '/non-existent'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
print(result.stderr.decode('utf-8'))
```
3. 通过管道进行通信:
```
import subprocess
with subprocess.Popen(['grep', 'python'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) as proc:
input_data = b'hello\npython\nworld\n'
output_data = proc.communicate(input=input_data)[0]
print(output_data.decode('utf-8'))
```
4. 使用shell执行命令:
```
import subprocess
result = subprocess.run('ls -l', shell=True, stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
```
需要注意的是,使用shell执行命令可能会存在安全风险,应尽量避免使用。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)