首页 > 解决方案 > 复制创建日期在特定范围内的文件

问题描述

'''我目前正在尝试使用shutil将文件从一个文件夹复制到另一个文件夹,但我似乎无法让它工作,进程说它已经完成但没有任何反应?'''

我添加的当前标准 raw_input 允许用户选择文件扩展名。我要添加的下一个标准是日期范围函数,因此我可以选择一个日期范围,例如:17/07/2020 到 04/08/2020 或当天的日期。

*更新代码

import os
import shutil
import os.path, time
from pip._vendor.distlib.compat import raw_input

os.chdir('C://')
src = ("C:/Users/eldri/OneDrive/Desktop/")
dst = ("C:/Users/eldri/OneDrive/Desktop/output")
ext = raw_input("[+] File format: ")
created = (" last modified: %s" % time.ctime(os.path.getmtime(src)))
start = raw_input("[+] Date start: ")
end = raw_input("[+] Date end: ")

def date_to_num(date):
    return int("".join(date.split('/')[::-1]))

def date_in_range(date, start, end):
    return date_to_num(date) > date_to_num(start) and date_to_num(date) < date_to_num(end)

for filename in os.listdir(src):
    if filename.endswith('.'+ext) and created.startswith(start) and created.endswith(end):
        shutil.copy( src + filename, dst)
        print("[+] File transferred "+filename + created)
    else:
        print("[+] File not transferred "+filename + created)
        
print("[+] Transfer complete")

我在看也许是熊猫?但不确定对python还是很陌生。

example on terminal
file extension = .csv
startdate = 12/05/2020
enddate = 07/08/2020

一旦用户输入了这些字段,它将只复制所需的文件。

创建文件的当前输出为:

[+] File transferred BASE1011.xls last modified: Fri Jul 17 10:11:40 2020
[+] File transferred BASE1112.xls last modified: Fri Jul 17 10:11:40 2020
[+] File transferred BASE1213.xls last modified: Fri Jul 17 10:11:40 2020
[+] File transferred BASE1314.xls last modified: Fri Jul 17 10:11:40 2020
[+] File transferred BASE1415.xls last modified: Fri Jul 17 10:11:40 2020

如上所述,我希望这些格式更易于用户输入:示例:开始 12/05/2020 结束日期 = 07/08/2020

谢谢你的帮助,我不是最擅长 python,但我正在努力学习,所以任何帮助都会很棒。

谢谢

标签: pythonshutil

解决方案


对于特定范围,您可以:

创建一个将日期解析为数字的函数:

def date_to_num(date):
    return int("".join(date.split('/')[::-1]))

def date_in_range(date, start, end):
    return date_to_num(date) > date_to_num(start) and date_to_num(date) < date_to_num(end)

然后像这样使用它:

date_in_range("03/02/2020", "01/01/2020", "05/05/2020")

推荐阅读