我正在尝试编写我认为是调用不同命令的简单实用程序脚本,但 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() ,或者我是否需要使用不同的方法?
添加回答
举报
0/150
提交
取消