什么是 Python 程序检查文件是否为有效 LaTeX 的最简单方法

什么是 Python 程序检查文件是否为有效 LaTeX 的最简单方法

问题陈述:

给定一个具有任意名称且扩展名可能不正确的文件,如何以编程方式和/或使用命令行工具确定它是否是 LaTeX 文件?

语境:

我当时正在使用 ArXiV 中的数据挖掘源文件进行一些业余 ML 工作,但遇到了一个问题。

源文件在 amazon s3 中被打包为大的 tar.gz 文件,你可以付费下载并使用 tar -xvf 解压,

解压后,您将获得一个文件夹结构

FolderNameWithMonth/
    file1.gz
    file2.gz
    file3.pdf
    file4.gz
    file5.pdf 
    ...

因此,基本上,当有人将预印本上传到 ArXiV 时,如果他们只上传 pdf,那么他们的文件将是上述文件夹中的 pdf。如果他们上传一组文件(source.tex、图像等...),则会将其压缩到 gzip 中。

但问题是,我上面列出的一些 gzip 文件实际上根本不是 gzip 文件!它们只是恰好被命名为“filename.gz”,如果您用记事本(或您选择的任何其他文本编辑器)打开它们,您会惊讶地发现它们实际上是 LaTeX 文件。它们只是被错误地命名为 .gz 扩展名。

所以这引出了我们的问题,如何通过编程来清除这里的 gzip 冒名顶替者(即检查它们的内容是否是秘密有效的 LaTeX,因此不需要解压缩)。

解决方案的一些想法:

  1. 给定一个文件,你可以尝试解压它,如果失败,则尝试编译它(我应该使用什么编译器?),如果也失败,则该文件可能是我尚未考虑过的其他奇怪格式。但是,如果你有很多文件,则编译每个文件是一项非常昂贵的操作

  2. 是否有可以搜索的关键词?我原本想将文件扫描为字符串并进行查找,\end{document}但结果发现普通 gzip 有时也可能在文本中包含该关键词,因此这种方法没有我所希望的那么有效。

  3. 向 arxiv 发送愤怒的电子邮件,要求他们正确标记文件扩展名,但他们已经压力很大,而且薪水很低,所以这可能不是一个有效的策略。

相关内容