我正在嘗試編寫我認(rèn)為是調(diào)用不同命令的簡單實(shí)用程序腳本,但 Popen.communicate() 似乎附加了一個換行符。我想這是終止輸入,它與一個基本腳本一起工作,該腳本接受輸入并將其打印出來,但是當(dāng)另一個程序是交互式的(例如bc)時,它會導(dǎo)致問題 。要重現(xiàn)的最少代碼,使用 bc 代替其他程序(因?yàn)閮烧叨际墙换ナ降?,讓它與 bc 一起工作應(yīng)該可以解決問題):#!/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'),大概是由附加的換行符引起的,因?yàn)樵?shell 中將相同的字符串輸送到 bc echo "2+2" | bc,打印4得很好。是否可以在不附加換行符的情況下使用 Popen.communicate() ,或者我是否需要使用不同的方法?
添加回答
舉報
0/150
提交
取消