使用Python將文件名傳遞給shell命令

2024-05-16 21:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个场景。我想从python脚本中运行命令行程序。 该命令将在执行后生成一个文件,我将进一步将其读入 操作。 我想传递一个文件名作为函数参数。在

 def myfunc(myinputfile,myoutputfile):
     cmd = "mycommand -i %s -o %s" %(myinputfile,myoutputfile)

我试着用subprocess.call但显然它需要我将commandname和参数作为list的单独条目来编写。我还有别的办法吗。另外,在继续之前执行命令是很重要的,因为我希望稍后在脚本中将输出从文件读入变量。在


Tags: 文件命令行命令程序脚本cmd文件名def
2条回答

除非使用shell=True,否则需要将一个列表的参数传递给subprocess

def myfunc(myinputfile,myoutputfile):
    cmd = ['mycommand', '-i', myinputfile, '-o', myoutputfile]

顺便说一句,这使得使用变量值作为参数变得更加容易。。在

如果您想调用shell命令,我建议:

    d = dict(os.environ.copy()) #copy enviroment
    cmd = "mycommand -i %s -o %s" %(myinputfile,myoutputfile)
    p = subprocess.Popen(cmd, shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.STDOUT,env=os.environ,cwd=PATHWHEREYOUHAVEACOMMAND,close_fds=True)

如果要打开终端并运行命令:

^{pr2}$

相关问题 更多 >