欢迎访问宙启技术站
智能推送

使用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()方法等待命令执行完成,打印输出。