用python写一个subprocess.Popen执行命令的脚本
时间: 2023-01-29 17:48:53 浏览: 109
在 Python 中,可以使用 `subprocess` 模块的 `Popen` 函数来执行外部命令。例如,要使用 `Popen` 执行命令 `ls -l`,可以这样写:
```
import subprocess
cmd = ['ls', '-l']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print(out.decode())
```
其中,`cmd` 是一个列表,表示要执行的命令和参数。`Popen` 函数会返回一个 `Popen` 对象,该对象有一个 `communicate` 方法,用于获取命令的输出和错误信息。调用 `communicate` 方法时,需要传入两个参数 `stdout` 和 `stderr`,表示将命令的输出和错误信息保存到哪里。在这里,我们将它们保存到了两个管道中。最后,我们使用 `decode` 方法将 `out` 和 `err` 转换成字符串,并使用 `print` 函数将它们输出到控制台。
相关问题
请问python中,用 os.system()函数和subprocess.Popen 函数打开脚本有什么优劣之处吗
os.system() 函数和 subprocess.Popen 函数都可以用来打开脚本,但是它们有一些区别。
os.system() 函数可以在执行命令后直接返回结果,但是它只能返回命令的退出状态码(0 表示成功,非零值表示失败),不能获取输出信息。另外,os.system() 函数还存在一些安全风险,因为它可能会被用来执行一些有害的命令。
subprocess.Popen 函数则更为灵活,可以获取命令的输出信息,并且还可以通过一些参数(如 shell=True)来定制命令的执行方式。但是,使用 subprocess.Popen 函数需要更多的代码,因为需要手动处理输入输出流。
综合而言,如果你只需要执行一些简单的命令,并且不需要获取命令的输出信息,可以使用 os.system() 函数。如果需要更为灵活和安全的执行方式,并且需要获取命令的输出信息,可以使用 subprocess.Popen 函数。
subprocess.Popen如何执行python脚本,并传入参数给python脚本使用
对于这个问题,我可以回答。subprocess.Popen可以用于执行Python脚本并传入参数。下面是一个示例代码:
```python
import subprocess
args = ['python', 'script.py', '--arg1=value1', '--arg2=value2']
process = subprocess.Popen(args, stdout=subprocess.PIPE)
output, error = process.communicate()
print(output.decode())
```
这个代码片段会执行一个名为script.py的Python脚本,并且传入两个参数。这些参数的值是value1和value2。脚本的输出将会被打印到控制台上。
阅读全文