我有一个名为"abc">的二进制可执行文件,还有一个称为<strong]"input.txt">
./abc < input.txt
如何在Python中运行这个bash命令,我尝试了一些方法,但出现了错误。
编辑:我还需要存储命令的输出。
第2版:
我用这种方式解决了问题,谢谢你的帮助。
input_path=input.txt文件的路径。
out = subprocess.Popen(["./abc"],stdin=open(input_path),stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout,stderr = out.communicate()
print(stdout)
使用操作系统
import os
os.system("echo test from shell");
使用子流程是调用系统命令和可执行文件的最佳方式。它提供了比os.system((更好的控制,并打算取代它。下面的python文档链接提供了更多信息。
https://docs.python.org/3/library/subprocess.html
这里有一段代码,它使用子流程读取head的输出,返回txt文件中的前100行,并逐行处理。它会为您提供输出(out(和任何错误(err(。
mycmd = 'head -100 myfile.txt'
(out, err) = subprocess.Popen(mycmd, stdout=subprocess.PIPE, shell=True).communicate()
myrows = str(out.decode("utf-8")).split("n")
for myrow in myrows:
# do something with myrow
这可以通过os
模块完成。下面的代码运行得非常好。
import os
path = "path of the executable 'abc' and 'input.txt' file"
os.chdir(path)
os.system("./abc < input.txt")
希望这能奏效:(