我是编程新手,对 Python 更是如此。所以请原谅我的无知。我正在尝试为自己编写一个脚本,它将移动在过去 24 小时内修改过的文件。到目前为止,我想出了这个:
import datetime
import os
import shutil
src = "C:\Users\Student\Desktop\FolderA"
dst = "C:\Users\Student\Desktop\FolderB"
now = dt.datetime.now()
before = now - dt.timedelta(hours=24)
def mins_since_mod(fname):
return (os.path.getmtime(fname))
for fname in os.listdir(src):
if mins_since_mod > before:
src_fname = os.path.join(src,fname)
os.path.join(dst,fname)
shutil.move(src_fname, dst)
我知道我已经接近解决方案,但我似乎无法弄清楚如何让它发挥作用。我环顾四周的社区,但无法找到解决我的问题的方法。感谢您提供任何线索或建议。
最佳答案
有几件事需要改变。首先,您无法将 before
中的 datetime
与 getmtime()
返回的 Unix 时间戳进行比较。直接使用它更容易。此外,您实际上需要将(完整)文件名传递给 mins_since_mod()
以便它执行任何操作。
这里有一些应该起作用的东西,更改 mins_since_mod()
的名称以反射(reflect)它做得更好的地方:
import time
import os
import shutil
SECONDS_IN_DAY = 24 * 60 * 60
src = "C:\Users\Student\Desktop\FolderA"
dst = "C:\Users\Student\Desktop\FolderB"
now = time.time()
before = now - SECONDS_IN_DAY
def last_mod_time(fname):
return os.path.getmtime(fname)
for fname in os.listdir(src):
src_fname = os.path.join(src, fname)
if last_mod_time(src_fname) > before:
dst_fname = os.path.join(dst, fname)
shutil.move(src_fname, dst_fname)
关于python - 按创建/修改日期移动文件然后使用 Python 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41046980/