使用mathematica合并多文档内的文本
程序员文章站
2022-04-01 07:55:51
...
在进行数学建模比赛时,遇到了这样的一个问题。
已有多个matlab文件.m在同一个目录下,现要把它们全部附在论文的附录里面。以文本格式储存,在每个文件的开头写上关于此文件名的注释。
显然,将每一个文件先打开,然后逐个进行复制的行为比较繁杂。现提供一种基于mathematica语言的方法:
首先新建一个.nb文件。
然后获取该目录下所有文件名,并筛选掉非.m格式的:
dtr="C:\\..."(*需要获取内容的文件的目录*)
[email protected];
list=Select[FileNames[], StringMatchQ[#, "*.m"] &]
再接着获取每一个文件的内容
ctt = Import[dtr <> "\\" <> #, "Text"] & /@ list;
最后把它们拼接在一起,得到按照这样的格式的一个.txt文件
% file1.m
file1 starts
...
file1 end
% file2.m
...
使用以下命令即可
az = "% " <> list[[#]] <> "
" <> ctt[[#]] <> "
" & /@ Range[[email protected]];
Export["az.txt", az];
SystemOpen["az.txt"]
az.txt便是我们最终要的文件了。将其附在论文后面即可。
亲测的唯一缺点是有时候会出现乱码,尤其是对于使用更早版本的matlab写的.m文件。但是本人不太熟悉matlab,如果有基于matlab的方式,请不吝赐教,丢个链接也可。
如果有更简洁、方便的方法,或对本文有所建议等,欢迎指出。