亲自测试成功!
参考文件:
Python执行Linux系统命令的4种方法:点击打开链接
1. 执行操作文件,然后读取数据。
p = subprocess.Popen(path_crf_test+' -m '+path_model+' '+ path_test,
shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in p.stdout.readlines():
f_trained.write(line.strip()+'\n')
#print line,
f_trained.close()
etval = p.wait()
if etval == 0:
flag_success = 0
etval 是0代表成功读取。
死锁
但是如果你使用了管道,而又不去处理管道的输出,那么小心点,如果子进程输出数据过多,死锁就会发生了,比如下面的用法:
p=subprocess.Popen("longprint", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
p.wait()
longprint是一个假想的有大量输出的 进程 ,那么在我的xp, Python2.5的环境下,当输出达到4096时,死锁就发生了。当然,如果我们用p.stdout.readline或者p. commu nicate去清理输出,那么无论输出多少,死锁都是不会发生的。或者我们不使用管道,比如不做重定向,或者重定向到文件,也都是可以避免死锁的。
2.删除文件的命令
subprocess.call("rm -rf " + path_write_test, shell=True)
返回结果是0 成功。