Automation 如何更新;上次更新";根据文本文件在操作系统中的修改日期自动更新文本文件中的日期?

Automation 如何更新;上次更新";根据文本文件在操作系统中的修改日期自动更新文本文件中的日期?,automation,scripting,Automation,Scripting,VHDL中有几个源文件。所有文件都有一个标题,其中包括文件名、创建日期和说明。其中之一是最后更新日期。所有文件都在Git中进行版本控制 通常情况下,文件会被修改、提交和推送。但是,上次更新日期并不经常更新。这是错误的,因为在不同的时间处理了太多不同的文件,人们可能会忘记始终将文件头的“上次更新”部分更改为实际更改的最新日期 我想自动化这个过程,相信有很多不同的方法可以做到这一点 某种脚本必须检查文本文件头中的上次更新日期。然后,如果它与可通过文件系统中文件的属性访问的实际上次修改日期不同,则文本

VHDL中有几个源文件。所有文件都有一个标题,其中包括文件名、创建日期和说明。其中之一是最后更新日期。所有文件都在Git中进行版本控制

通常情况下,文件会被修改、提交和推送。但是,上次更新日期并不经常更新。这是错误的,因为在不同的时间处理了太多不同的文件,人们可能会忘记始终将文件头的“上次更新”部分更改为实际更改的最新日期

我想自动化这个过程,相信有很多不同的方法可以做到这一点

某种脚本必须检查文本文件头中的上次更新日期。然后,如果它与可通过文件系统中文件的属性访问的实际上次修改日期不同,则文本中的上次更新日期必须更新为上次修改日期值。这样做的最佳方式是什么?Python脚本、Bash脚本还是其他什么


基本上,当文件被提交到Git中时,我想这样做。理想情况下,它应该自动执行,但在终端中运行一行来执行脚本可能不是什么大问题。需要对提交和推送的文件进行检查。

我不是Python程序员,但我编写了一个小脚本,希望能帮助您。也许这符合你的需要

脚本应该做什么:

  • 获取扩展名为.vdhl的路径(此处为c:\Python)中的所有文件

  • 循环文件并通过正则表达式从第9行提取日期

  • 从文件中获取上次修改的日期

  • 如果上次修改>则输入文件中的日期,然后更新文件

    import os
    import re
    import glob
    import datetime
    
    path = r"c:\Python"
    mylist = [f for f in glob.glob("*.vhdl")]
    print(mylist)
    
    for i in mylist:
        filepath = os.path.join(path, i)
        with open(filepath, 'r+') as f:
            content = f.read()
            last_update = re.findall("Last\supdate\:\s+(\d{4}-\d{2}-\d{2})", content)
            modified = os.path.getmtime(filepath)
            modified_readable = str(datetime.datetime.fromtimestamp(modified))[:10]
            #print(content)
            #print(last_update)
            #print(modified_readable)
            #print("Date modified:", datetime.datetime.fromtimestamp(modified))
            if (modified_readable > last_update[0]):
                print(filepath, 'UPDATE')
                text = re.sub(last_update[0], modified_readable, content)
                f.seek(0)
                f.write(text)
                f.truncate()
            else:
                print(filepath, 'NO CHANGE')
    

  • 请提供一个带有标题日期时间信息的测试文件。您是在Windows计算机上吗?我会使用Python或Windows Autoit。第9行通常会这样说--“上一次更新:2020-09-28”Autoit脚本(仅在Windows上运行)可以,还是需要Python?脚本是否应该查找文件夹中的所有.vhdl文件并进行检查/更新?当然,这是可能的。如果您愿意,我可以给您一点帮助在Autoit中编写Wirten脚本的开始。