繁体   English   中英

如何从python运行和控制命令行程序?

[英]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

当我刚刚回答有关子流程的另一个问题时 ,有一个更好的选择!

请查看强大的python sh库,它是Python的完整子进程接口,可让您像调用函数一样调用任何程序,更重要的是,它具有pythonic的特性。

除了使用管道重定向数据流外,您还可以处理以下命令行:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM