python 获取前2天创建的所有.py文件

6rqinv9w  于 2022-12-25  发布在  Python
关注(0)|答案(3)|浏览(167)

我想得到所有的.py文件是为2前几天创建的。
我编写了代码来搜索扩展名为.py的文件,现在我需要测试它们的年龄。

import os
import shutil
import getctime

source = r'/Users/sourcedir'
destination = r'/Users/destdir'

for root, dir, files in os.walk(source):
    for file in files:
        if '.py' in file:
            shutil.move(os.path.join(root, file), destination)
t8e9dugd

t8e9dugd1#

您需要测试目录中每个文件的修改日期。(假设您希望文件在两天前 * 修改 *,创建与修改或访问不同,这取决于您的操作系统,在Windows上此函数返回 * 创建 * 日期)
os.path.getmtime('file_path')函数返回文件的创建时间(Windows)或最后更改时间(Linux)作为纪元时间戳。
您需要将这个纪元时间戳与您的参考时间戳(两天前?)进行比较,如果时间戳更早,则继续您的move(...)调用。

6fe3ivhb

6fe3ivhb2#

要在2天内创建'.py'文件,可以使用pathlib模块中的Path类作为处理文件系统路径的替代方法。

from pathlib import Path
from datetime import datetime

SOURCE = Path("Path_to_Searchfor")
DESTINATION = Path("Path_to_Moveto")
SINCE = 2

# Time now
time_now = datetime.now()

# Iterating path for '.py' files
for file in SOURCE.rglob("*.py"):
    created_time = file.stat().st_ctime
    created_time = datetime.fromtimestamp(created_time)
    created_on = (time_now - created_time).days  # calculating days since file created

    # Moving file to destination only <=2 days
    if created_on <= SINCE:
        file.replace(DESTINATION.joinpath(file.name))

使用Path类,可以更好地使用glob方法以某种模式迭代给定路径,for语句中的rglob("*.py")搜索源路径中的所有python文件,并返回Path对象的可迭代对象。
stat方法给出了.“py”文件的属性,使用该属性计算自datetime模块创建以来的天数。
Path类的replace方法替换shutil.move并将文件移动到传入的目标。

uqcuzwp8

uqcuzwp83#

seconds_in_two_days = 2 * 24 * 60 * 60
two_days_ago = datetime.datetime.now().timestamp() - seconds_in_two_days
if os.path.getctime(file) > two_days_ago:
   # ...

如果您想包括两天前的一整天,也可以使用其他变体。

相关问题