python的Popen多行交互

Posted MartinShi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的Popen多行交互相关的知识,希望对你有一定的参考价值。

看到自动化测试的一个例子,RSpec中通过IO.popen进行命令行程序的测试(涉及交互),

然后在Python中,Popen的用法有点小的区别,查了一些资料,有些内容整理下,记个笔记:

  1. python3中目前用subprocess库
  2. Popen,可设置stdin,stdout为PIPE
  3. Popen.communicate()是用于一次性通信的辅助函数
  4. 多行的交互式的通信,用write和readline,用的时候注意读写阻塞,按照write->flush->read的顺序,示例代码:
    proc.stdin.write(b\'2+2\\n\')
    proc.stdin.flush()
    print(proc.stdout.readline())
    

参考:

  1. Multiple inputs and outputs in python subprocess communicate
  2. Interacting with a long-running child process in Python

扩展:

  因为用于自动化测试,不用考虑非阻塞的情况了,还是Ruby的语法糖甜。

 

以上是关于python的Popen多行交互的主要内容,如果未能解决你的问题,请参考以下文章

PYTHON学习0003:用户交互和注释----2019-6-4

从 python 与 bash 交互

Python面试高频问题: os.system()和os.popen()的区别

用户与程序交互

python的注释与用户交互 基本数据类型

在交互模式下在python中执行多行语句