按创建或修改日期复制文件

时间:2019-11-11 15:17:25

标签: python python-3.x

请原谅我的无知,我是编程和python的新手,下面的代码仅当在过去24小时内对文件进行了修改时,才允许我复制文件。

有没有更好的方法可以扭曲程序以考虑最后8个字符,即文件创建的日期_20191108。文件通常如下所示

  • 7 *** _ 13_01_2172_20191106.txt
  • 7 *** _ 13_01_2174_20191107.txt
  • 7 *** _ 12_01_2175_20191108.txt
  • 7 *** _ 13_01_2176_20191108.txt

    import time
    import os
    import shutil
    
    giorno = 24 * 60 * 60
    
    src = 'C:/Users/Daniels/Desktop/FileMover/SourceA'
    dst = 'C:/Users/Daniels/Desktop/FileMover/SourceB'
    
    now = time.time()
    primo = now - giorno
    
    def last_mod_time(file_name):
        return os.path.getmtime(file_name)
    
    for file_name in os.listdir(src):
        src_filename = os.path.join(src, file_name)
        if last_mod_time(src_filename) > primo:
            dst_filename = os.path.join(dst, file_name)
            shutil.copy(src_filename, dst_filename)
            print(file_name)
    

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定我是否正确回答了您的问题。

如果要使用文件名生成日期,则可以简单地将其解析并将其传递给datetime.datetime()。请记住传递适当的tzinfo信息。

import datetime

fname = '20191112.txt'
year = int(d[:4])
month = int(d[4:6])
day = int(d[6:8])
date = datetime.datetime(year, month, day, datetime.tzinfo=timezone.utc)

现在日期是一个日期时间对象。

>>> date
datetime.datetime(2019, 11, 2, 0, 0)

如果脚本中需要的话,可以轻松地将其转换为UNIX时间戳。

>>> date.timestamp()
1572649200.0