我需要通过将目录中的一组文件传递给 matlab 或 python 脚本来处理它们。
对于目录中的每个输入文件 FileName.IN,我需要获取一个输出文件 FileName.OUT。
解决方案是 Python 还是 bash 脚本并不重要。
为了实现我的目标,我尝试了 GNU Make(或 Python Snakemake),但我有点坚持不懈。 看起来我可以说 GNU Make 要做: “嘿,对于每个输出(目标)文件 FileName.out 搜索相应的 FileName.IN(先决条件)”。
然而我想做的恰恰相反,如前所述。
make
(或snakemake
)是正确的选择吗?- 您还有什么建议?
我的 makefile
代码看起来像这样,但它不能完成工作(我是 GNU make 的新手):
in_files = *.IN
out_files = *.out
$(out_files) : $(in_files)
matlab -nosplash -nodesktop -r "a_matlab_function('$<','$@')"
最佳答案
我对 Snakemake 一无所知,但在 GNU Make 中你可以将 in_files
转换为 out_files
:
in_files = $(wildcard *.IN)
out_files = $(in_files:.IN=.out)
然后你制作一个依赖于所有输出的虚拟目标:
all: $(out_files)
.PHONY: all
最后是从一个输入创建一个输出的规则:
%.out: %.IN
matlab -nosplash -nodesktop -r "a_matlab_function('$<','$@')"
关于python - 批处理 : GNU-make, Snakemake 还是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41698983/