我有一个命令行程序,可以通过以下子进程运行。
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'])
注意用于解包参数的*
。有关拆包的更多信息,请参阅 here和 here
不需要先加入
参数,这只会创建一个长字符串(仍然是一个参数)
一个例子:
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']
关于python - Python 中的子进程文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605775/