为了账号安全,请及时绑定邮箱和手机立即绑定

Python2:写入交互过程的标准输入,使用 Popen.communicate(),没有尾随换行符

Python2:写入交互过程的标准输入,使用 Popen.communicate(),没有尾随换行符

动漫人物 2021-09-11 20:59:39
我正在尝试编写我认为是调用不同命令的简单实用程序脚本,但 Popen.communicate() 似乎附加了一个换行符。我想这是终止输入,它与一个基本脚本一起工作,该脚本接受输入并将其打印出来,但是当另一个程序是交互式的(例如bc)时,它会导致问题 。要重现的最少代码,使用 bc 代替其他程序(因为两者都是交互式的,让它与 bc 一起工作应该可以解决问题):#!/usr/bin/env pythonfrom subprocess import Popen, PIPEcommand = "bc"p = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)stdout_data = p.communicate(input="2+2")print(stdout_data)这打印('', '(standard_in) 1: syntax error\n'),大概是由附加的换行符引起的,因为在 shell 中将相同的字符串输送到 bc echo "2+2" | bc,打印4得很好。是否可以在不附加换行符的情况下使用 Popen.communicate() ,或者我是否需要使用不同的方法?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信