当 I/O 文件的名称必须更改时 Python 内的命令
Command inside Python when name of I/O files must change
好的,我已经找到了如何用这个 post how to run my own external command in python script
在 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
到 outputfilename
中提取一些变量(就像一个过滤器)。它与任何其他 shell 命令一样。问题是在循环中它无法识别 inputfilename
.
假设在循环内 inputfilename
和 outputfilename
是 2 个变量保存你的名字(resp.)输入和输出文件,只需做:
proc = subprocess.Popen(shlex.split('gr_cp -option=90') + [ inputfilename, outputfilename ])
(因为shlex.split
的输出是一个字符串列表,所以你可以只添加列表的最后一个成员...)
好的,我已经找到了如何用这个 post how to run my own external command in python script
在 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
到 outputfilename
中提取一些变量(就像一个过滤器)。它与任何其他 shell 命令一样。问题是在循环中它无法识别 inputfilename
.
假设在循环内 inputfilename
和 outputfilename
是 2 个变量保存你的名字(resp.)输入和输出文件,只需做:
proc = subprocess.Popen(shlex.split('gr_cp -option=90') + [ inputfilename, outputfilename ])
(因为shlex.split
的输出是一个字符串列表,所以你可以只添加列表的最后一个成员...)