命令,当I/O文件的名称必须更改时



好的,我已经找到了如何在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运行。

谢谢。

EDIT:按要求,循环是这样的:

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是一个命令行工具,它从inputfilenameoutputfilename中提取一些变量(类似于过滤器)。它与任何其他shell命令类似。问题是,在循环中,它不能识别inputfilename

假设在循环中inputfilenameoutputfilename是保存您(resp.)输入和输出文件名称的两个变量,只需执行:

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

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

相关内容

  • 没有找到相关文章

最新更新