最好的问候
在运行LaTeX之前,您不仅需要检查更改,还需要知道所有更改都已完成。例如,如果您在第一个文件被修改后启动LaTeX,而其他更改仍在等待中,那么您将使用部分数据并且需要稍后重新运行。
等待您的第一个程序完成:
#!/bin/bash
first-program &&
run-after-changes-complete
使用 && 表示只有当第一个命令成功完成(零退出代码)时才会执行第二个命令。由于这个简单的脚本即使第一个命令没有更改任何文件也会始终运行第二个命令,因此您可以将其合并到您已经熟悉的任何构建系统中,例如 make。
我自己不是很擅长Python。但在紧急情况下,假设您正在使用Linux,您可以定期执行"ls -lrt /path/to/directory"(获取目录内容并按最后修改时间排序),并比较最后两个调用的结果是否有差异。如果有差异,则表示发生了更改。虽然不是非常详细,但可以完成工作。
hashlib
来实现 MD5 算法:>>> import hashlib
>>> import os
>>> m = hashlib.md5()
>>> for root, dirs, files in os.walk(path):
for file_read in files:
full_path = os.path.join(root, file_read)
for line in open(full_path).readlines():
m.update(line)
>>> m.digest()
'pQ\x1b\xb9oC\x9bl\xea\xbf\x1d\xda\x16\xfe8\xcf'
您可以将此结果保存在文件或变量中,并将其与下一次运行的结果进行比较。这将检测任何子目录中的任何文件更改。
这不考虑文件权限更改;如果您还需要监视这些更改,可以通过将表示权限的字符串(例如,通过os.stat
访问,属性取决于您的系统)附加到m
变量来解决。