好的,我已经找到了如何在 Python 中执行复杂的命令,这篇文章如何在 python 脚本中运行我自己的外部命令
import shlex
import subprocess
proc = subprocess.Popen(shlex.split('gr_cp -option=90 inputfilename outputfilename'))
proc.communicate()
它确实有效,但在我的情况下,我正在执行一个循环以及每次迭代的名称inputfilename
和outputfilename
更改。我已经尝试过该解决方案,但它不起作用,因为它无法识别inputfilename
.
在循环中,inputfilename
是mbr{: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('..')
循环探索目录并将mbr001
其mbr020
命名inputfile
为每个父目录。
gr_cp 是一个命令行工具,可以从inputfilename
to中提取一些变量outputfilename
(如过滤器)。它就像任何其他 shell 命令一样。问题是在循环中它不能识别inputfilename
.