0

好的,我已经找到了如何在 Python 中执行复杂的命令,这篇文章如何在 python 脚本中运行我自己的外部命令

import shlex
import subprocess
proc = subprocess.Popen(shlex.split('gr_cp -option=90 inputfilename outputfilename'))
proc.communicate()

它确实有效,但在我的情况下,我正在执行一个循环以及每次迭代的名称inputfilenameoutputfilename更改。我已经尝试过该解决方案,但它不起作用,因为它无法识别inputfilename.

在循环中,inputfilenamembr{:03}_20161110.grb1.format(i)i从 1 到 21 的循环中运行的位置。

谢谢你。

编辑:根据要求,循环是这样的:

for i in range(1, 21):
    dn = './mbr{:03}'.format(i)
    inputfilename = 'mbr{:03}_2016111000.grb1'.format(i) 
    os.chdir(dn)
    #do some things copying and concatenating files
    proc = subprocess.Popen(shlex.split('gr_cp -option=90 inputfilename outfilename'))
    proc.communicate()
    os.chdir('..')

循环探索目录并将mbr001mbr020命名inputfile为每个父目录。

gr_cp 是一个命令行工具,可以从inputfilenameto中提取一些变量outputfilename(如过滤器)。它就像任何其他 shell 命令一样。问题是在循环中它不能识别inputfilename.

4

1 回答 1

1

假设在循环内部inputfilenameoutputfilename有 2 个变量分别保存您(分别)输入和输出文件的名称,只需执行以下操作:

proc = subprocess.Popen(shlex.split('gr_cp -option=90') + [ inputfilename, outputfilename ])

(因为输出shlex.split是一个字符串列表,所以你可以添加列表的最后一个成员......)

于 2016-11-14T16:59:24.560 回答