[英]How to run and control a commandline program from python?
我有一个Python脚本,它将提供一个输出文件。 我需要将此输出文件提供给命令行程序。 有什么方法可以调用命令行程序并控制它来处理python中的文件?
我试图运行此代码
import os
import subprocess
import sys
proc = subprocess.Popen(["program.exe"], stdin=subprocess.PIPE)
proc.communicate(input=sys.argv[1]) #here the filename should be entered
proc.communicate(input=sys.argv[2]) #choice 1
proc.communicate(input=sys.argv[3]) #choice 2
有什么办法可以输入来自命令行的输入。 而且尽管cmd程序在我运行代码后打开了界面闪烁。
谢谢。
注意:平台是windows
看看http://docs.python.org/library/subprocess.html 。 这是启动外部程序时的当前方法。 有很多示例,您必须检查自己最适合自己的需求。
您可以执行os.system(somestr)
,使您可以在命令行semestr
作为命令执行。 但是,随着时间的流逝,由于不安全等原因,我们对此进行了仔细检查(我发现链接后会立即发布链接)。
结果,它通常被subprocess.popen
取代。
希望这可以帮助
根据您需要的控制量,您可能会发现使用pexpect更容易,这使得解析程序的输出变得相当容易,并且还可以轻松地与stdin程序进行通信。 查看网站,他们有一些不错的例子。
如果目标程序需要STDIN
上的输入,则可以使用pipe进行重定向:
python myfile.py | someprogram
除了使用管道重定向数据流外,您还可以处理以下命令行:
mycode.py -o outputfile inputfilename.txt
您必须导入sys
import sys
并在您的主要功能:
ii=1
infile=None
outfile=None
# let's process the command line
while ii < len(sys.argv):
arg = sys.argv[ii]
if arg == '-o':
ii = ii +1
outfile = sys.argv[ii]
else:
infile=arg
ii = ii +1
当然,您可以添加一些文件检查等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.