Python中的子进程文件操作

Python中的子进程文件操作,python,command-line,automation,subprocess,Python,Command Line,Automation,Subprocess,我有一个命令行程序,可以通过以下子进程运行 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

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

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 = glob.glob("D:\\*.tif")
subprocess.call(['cmd.bat', '-infile', *files, '-outfile', 'outfile.tif'])
请注意用于解包参数的
*
。有关解压缩的详细信息,请参阅和

不需要先连接参数,这只会创建一个长字符串(仍然是一个参数)

例如:

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']

它很有魅力。如果您能解释更多关于
*
@mk1的信息,我将不胜感激。我在一个链接中编辑了一些额外的解释和示例