我有一个用Python编写的脚本,它创建了一个线程,使用"subprocess"模块执行外部程序。现在,这个外部程序非常简单,从标准输入中取出一个数字并输出:
#include <stdio.h>
main(){
int numero;
printf("Inserisci numero: ");
scanf("%d",&numero);
switch(numero){
case 1:
printf("uno\n");
break;
case 2:
printf("due\n");
break;
default:
printf("caso default\n");
}
}
现在,我已经用Python编写了一个脚本,从文本文件中获取输入;该脚本运行在以下模式下:
python filtro.py ./a.out test.txt
脚本如下:
import sys
import subprocess
import threading
import fileinput
class Filtro:
#Costruttore
def __init__(self,cmd):
#Funzione di esecuzione thread
def exec_cmd():
try:
subprocess.check_call(cmd, shell=True)
except subprocess.CalledProcessError:
print "Il comando", cmd, "non esiste. Riprovare."
#Generazione thread demone
self.thr=threading.Thread(name="Demone_cmd",target=exec_cmd)
self.thr.setDaemon(True)
self.thr.start()
def inp(self,txt):
for line in fileinput.input(txt):
print line
filtro=Filtro(sys.argv[1])
filtro.inp(sys.argv[2])
问题在于文件输入被忽略,输出结果如下:
[vbruscin@lxplus0044 python]$ python filtro.py ./a.out test.txt
1
2
3
Inserisci numero: [vbruscin@lxplus0044 python]$ caso default
什么问题?感谢所有提供帮助的人。