小编典典

Popen.communicate() 说明文件:

请注意,如果要将数据发送到进程的stdin,则需要使用stdin = PIPE创建Popen对象。同样,要在结果元组中获得除None以外的任何内容,你还需要提供stdout = PIPE和/或stderr = PIPE。

替换os.popen *

pipe = os.popen(cmd, 'w', bufsize)

# ==>

pipe = Popen(cmd, shell=True, bufsize=bufsize, stdin=PIPE).stdin

警告使用communication()而不是stdin.write(),stdout.read()或stderr.read()来避免死锁,因为任何其他OS管道缓冲区填满并阻塞了子进程。

因此,你的示例可以编写如下:

from subprocess import Popen, PIPE, STDOUT

p = Popen(['grep', 'f'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)

grep_stdout = p.communicate(input=b'one\ntwo\nthree\nfour\nfive\nsix\n')[0]

print(grep_stdout.decode())

# -> four

# -> five

# ->

在当前的Python 3版本中,你可以使用subprocess.run,将输入作为字符串传递给外部命令并获取其退出状态,并在一次调用中将输出作为字符串返回:

#!/usr/bin/env python3

from subprocess import run, PIPE

p = run(['grep', 'f'], stdout=PIPE,

input='one\ntwo\nthree\nfour\nfive\nsix\n', encoding='ascii')

print(p.returncode)

# -> 0

print(p.stdout)

# -> four

# -> five

# ->

2020-02-12

python控制台输入字符串作为参数_Python-如何将字符串传递到subprocess.Popen(使用stdin参数)?...相关推荐

  1. python popen 参数_Python – 如何传递一个字符串到subprocess.Popen(使用stdin参数)?

    如果我做以下: import subprocess from cStringIO import StringIO subprocess.Popen(['grep','f'],stdout=subpro ...

  2. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  3. python循环输入姓名并打印_python基础循环的学习记录

    一.while循环 如果条件成立(true),重复执行相同操作,条件不符合,跳出循环 while 循环条件: 循环操作 (1)while循环示例 例:输入王晓明5门课程的考试成绩,计算平均成绩i=1 ...

  4. python函数定义和其四种参数_python入门第九课:函数的定义及多种参数传递方式...

    本教程使用的课本是<Python编程:从入门到实践>,作者:[美] Eric Matthes 本节介绍Python中的函数,函数是可以反复使用的一段代码,有了函数能大大简化编程工作量,还能 ...

  5. python字符串设置字体_python怎么更改字符串后几位

    python更改字符串后几位的方法:可以利用replace()函数来实现.replace()函数可以把字符串中的旧字符串替换成新字符串,并返回替换后的新字符串.具体使用方法如:[str.replace ...

  6. python中对字符串进行编码_Python 中的字符串编码

    对Python字符编码一直没搞明白,今天看<Python参考手册>再次遇到这个问题,重新整理下 Python中字符串字面量用于指定一个字符序列,其定义方法是把文本放入单引号('),双引号( ...

  7. python获取字符串首字母_Python学习之字符串方法总结

    1.首字母大写 1 test = "abcdef" 2 v = test.capitalize() 3 print(v) 2.所有字母变小写,lower()只能对ASCII 也就是 ...

  8. python不支持单字符类型_Python数据类型之字符串

    1. Python字符串的创建 字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下: str = "我是字符串" str1 = '我也是字符串' ...

  9. python 字符串提取操作_python 中对字符串的操作

    一: 字符串基础介绍 python中定义的字符串是个常量,一旦定义后只能使用.不能修改 1.字符串的定义: s = ' aaaa' s = "bbbb " s = "&q ...

  10. python中如何修改字符串的值_python中修改字符串的5种方法!

    # str只读,那么可使用以下的方法修改 # 修改字符串常见的有五种你只要掌握一种既可 # 1.第一种是'替换法' str4 = "嘿爱多" # 字符串的元素不能修改 # str4 ...

最新文章

  1. 为什么新来的技术很难接手维护一个系统
  2. 打开word或者office程序报错:Microsoft Visual C++ Runtime Library. Runtime Error!
  3. 记一次错误的伪静态配置文件
  4. NYOJ练习题 又见Alice and Bob
  5. html动画效果结束返回,javascript判断css3动画结束 css3动画结束的回调函数
  6. 易语言 java支持_开源Java客户端可以连接易语言服务器
  7. Mac硬件温度管理软件TG Pro
  8. 计算机网络苏州大学题库,苏州大学计算机网络样卷B[计科大类].doc
  9. Base16,Base32,Base64编码的介绍
  10. JVM虚拟机基础知识(JVM位置、类加载生命周期、堆、元空间、jvm常用参数)
  11. 使用Django创建一份在线简历
  12. AI 边缘计算平台 - BeagleBone AI 64 简介
  13. cg of spears storm_Steam 上的 Storm Of Spears RPG
  14. 什么是嵌入式?嵌入式的应用
  15. Cisco 642-655 考试权威题库免费下载
  16. 官宣了!大杀四方的 Master 就是阿尔法狗
  17. 在网页中预览excel表格文件
  18. Broadcast 广播-(18)
  19. 【pytest】使用 mark 标记及运行测试用例,注册、管理 mark 标记
  20. 用PWM实现DAC功能

热门文章

  1. java实现2-3树_2-3-4树的分裂核心代码【JAVA实现】 | 学步园
  2. docker nacos mysql nginx 集群一台
  3. Centos7 安装Rabbitmq-server和Erlang 仓库汇总
  4. 3行代码实现ftp 上传、下载、删除操作集合
  5. 运行Jenkins部署任务
  6. 设置网页文字禁止复制
  7. php找不到phpmyadmin,phpMyAdmin 安装配置方法和问题解决
  8. js如何监听元素事件是否被移除_JS移除事件监听的方法 .removeEventListener( )
  9. android地图方位角_Android获取经纬度、计算距离、方位角
  10. 计算机房地板厚度,机房防静电地板 架空地板的技术参数与地板规格种类