Python中的子流程文件操作

mk1

我有一个命令行程序,可以通过以下子进程运行。

subprocess.call([CMD.bat, '-infile', infile1.tif, infile2.tif, '-outfile', outfile.tif])

当输入文件很少时,上面的代码没有问题。

但是,当输入文件很多时,很难全部输入它们。因此,我想使用glob.glob输入所有文件。

files = glob.glob("D:\\*.tif")

files = ",".join(files)

subprocess.call([CMD.bat, '-infile', files, '-outfile', outfile.tif])

不幸的是,此代码根本无法运行。如何解决这个问题呢?

任何想法,请帮忙。

奥弗·萨丹

您不能将其files作为单个参数输入,您需要对其进行解压缩:

files = glob.glob("D:\\*.tif")
subprocess.call(['cmd.bat', '-infile', *files, '-outfile', 'outfile.tif'])

请注意*用于解包参数。有关拆箱的更多信息,请参见此处此处

join首先不需要参数,只需创建一个长字符串(仍然是一个参数)

一个例子:

files = ['1.tif', '2.tif']
cmd = ['cmd.bat', '-infile', *files, '-outfile', 'outfile.tif']
print(cmd) # ['cmd.bat', '-infile', '1.tif', '2.tif', '-outfile', 'outfile.tif']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章