使用Python的popen2库处理外部命令的输入和输出。
发布时间:2024-01-07 22:17:13
Python的popen2库已经在Python 2.6版本中被废弃,取而代之的是subprocess库。popen2库提供了一种处理外部命令的输入和输出的方式,但是subprocess库提供了更强大和更灵活的功能,因此更推荐使用subprocess库。下面是使用subprocess库处理外部命令的输入和输出的示例代码。
import subprocess
# 使用subprocess库执行外部命令并获取输出
output = subprocess.check_output(['ls', '-l'])
# 打印命令输出
print(output)
# 使用subprocess库执行外部命令并获取输出,并将输出转换为字符串
output_str = output.decode('utf-8')
# 打印输出字符串
print(output_str)
# 使用subprocess库执行外部命令并处理命令输入和输出
process = subprocess.Popen(['grep', '-i', 'hello'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
# 向命令输入数据
process.stdin.write(b'Hello World
')
process.stdin.write(b'Hello Python
')
process.stdin.close()
# 读取命令的输出
output = process.stdout.read()
# 关闭输出流
process.stdout.close()
# 等待命令执行完成
process.wait()
# 打印输出
print(output)
在上面的示例中,我们使用subprocess库执行了一些外部命令,并获取了命令的输出。首先,我们使用check_output()函数执行ls -l命令,并将输出保存在output变量中,然后将输出打印出来。
然后,我们使用decode()方法将输出转换为字符串,并将其保存在output_str变量中,并将字符串打印出来。
接下来,我们使用Popen()函数执行了一个grep命令,并通过stdin参数将数据发送给命令的输入流。我们使用write()方法向命令输入数据,并在结束输入数据后关闭输入流。
然后,我们使用read()方法读取命令的输出,并将输出保存在output变量中,然后关闭输出流。
最后,我们使用wait()方法等待命令执行完成,打印输出。
