![](/img/trans.png)
[英]Why does my Perl script not do anything if I invoke with Popen immediately followed by wait or sleep from Python?
[英]Why my scanf catch the order that I give from my Popen
TL; DR:如何使我的scanf(必須為scanf)從python讀取輸入?
所以我在python中有這個文件
import subprocess
import sys
process=subprocess.Popen(["canCHandleIt.exe"],stdout=subprocess.PIPE)
res=process.communicate(2)
print res[0]
重點很簡單。 正如我的C代碼所建議的那樣,我希望C捕獲數字“ 2”並成功打印兩次。
#include <stdio.h>
int main(){
int x;int o;
scanf("%d",&x);
for (o=0;o<x;o++){
printf("Sucsess!");
}
}
但這只是停止。 當然,如果鍵入數字2,則可以使用,但是我希望我的scanf可以單獨使用。
有人可能建議我應該只使用等效於Python的sys.stdin.readline()
C,但我確實希望我的scanf能夠在沒有人為干擾的情況下工作。 (我之所以這樣問,是因為我經常在比賽中使用scanf,而我顯然想在python中復制比賽機器人。)
您可以假設我已經gcc了我的c文件。
嘗試這個:
import subprocess
import sys
process=subprocess.Popen(["canCHandleIt.exe"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
res=process.communicate('2')
print res[0]
...主要區別是stdin=subprocess.PIPE
傳遞給Popen()
,並將“ 2”作為字符串而不是int
communicate()
給communicate()
。
據記錄為communicate()
:
可選的輸入參數應該是要發送給子進程的字符串。
和
請注意,如果要將數據發送到進程的stdin,則需要使用stdin = PIPE創建Popen對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.