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的信息,我将不胜感激。我在一个链接中编辑了一些额外的解释和示例