Python中使用PIPE
操作Linux管道可以实现在Python脚本中调用Linux命令,可以使Python脚本更加灵活和强大。
首先,Python中使用subprocess
模块对Linux命令进行调用。具体使用方法为:
import subprocess
output = subprocess.check_output("Linux命令")
其中,subprocess.check_output
方法可以返回Linux命令的输出结果。
在使用subprocess
模块调用Linux管道时,可以使用Popen
方法将每个命令作为单独的参数传递,使用管道符|
将命令连接起来。例如:
import subprocess
command1 = 'cat /etc/passwd'
command2 = 'grep bash'
p1 = subprocess.Popen(command1.split(), stdout=subprocess.PIPE)
p2 = subprocess.Popen(command2.split(), stdin=p1.stdout, stdout=subprocess.PIPE)
output = p2.communicate()[0]
print(output.decode('utf-8'))
解释一下上述代码:
首先定义了两个Linux命令cat /etc/passwd
和grep bash
,分别用于输出系统中的用户列表和查找使用了Shell为bash的用户。
然后,使用Popen
方法创建两个进程p1
和p2
,分别执行两个命令。p2
进程的stdin
参数指向p1.stdout
,表示将p1
的输出结果作为p2
的输入。p2.communicate()[0]
方法返回p2
进程的输出结果。
最后,输出output
变量的结果。
下面再举一个例子:使用管道将两个命令的输出结果合并为一个文件。
import subprocess
command1 = 'ls -al /etc'
command2 = 'grep bash'
with open('output.txt', 'w') as f:
p1 = subprocess.Popen(command1.split(), stdout=subprocess.PIPE)
p2 = subprocess.Popen(command2.split(), stdin=p1.stdout, stdout=f)
p2.communicate()
print('Done!')
与上例类似,通过Popen
方法调用两个命令,p1
进程输出文件夹/etc
下的文件列表,p2
进程将输出结果中包含关键字bash
的行保存到文件output.txt
中。最后,输出Done!
表示操作完成。
以上就是Python中使用PIPE
操作Linux管道的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中使用PIPE操作Linux管道 - Python技术站