如何在最后5分钟内更改文件

时间:2015-11-11 16:02:26

标签: python

需要遍历当前目录并在最后5分钟内修改文件。我只是开始这个​​,这是我到目前为止

#!/usr/bin/python

import os,sys,time

dir = os.getcwd() 

print dir


for f in os.walk(dir):
    for i in os.stat(f).st_mtime:
    print i

当我运行此操作时,我收到此错误

for i in os.stat(f).st_mtime:

TypeError:强制转换为Unicode:需要字符串或缓冲区,找到元组

我想了解在我继续之前导致这种情况的原因

2 个答案:

答案 0 :(得分:6)

predict4 <- predict(model1,my_pml_testing[,-length(my_pml_testing)]) 生成元组,你正在尝试使用字符串。你想要这样的东西:

os.walk()

我相信。无论您在使用for root, dirs, files in walk(wav_root): for f in files: filename = root + f # Now use filename to call stat().st_mtime 进行迭代时的哪个位置,加入os.walk()root都会生成绝对路径IIRC。

请点击此处了解详情:http://www.tutorialspoint.com/python/os_walk.htm

答案 1 :(得分:3)

您需要解压缩,将文件加入根目录并进行比较:

import os, time

_dir = os.getcwd()
files = (fle for rt, _, f in os.walk(_dir) for fle in f if time.time() - os.stat(
    os.path.join(rt, fle)).st_mtime < 300)

print(list(files))

os.stat(filename).st_mtime返回一个无法迭代的时间,您需要将该时间与当前时间进行比较,time.time()本身会返回自纪元以来的秒数,因此您需要比较{{之间的差异1}}以秒为单位的分钟数,即你的情况下为300分钟。

如果您正在监控目录,可能会发现watchdog有用,那么文档中的示例就会完全符合您的要求:

time.time() - os.stat(os.path.join(rt, fle)).st_mtime

它以递归方式检查当前目录以查找对文件的更改,并将任何更改记录到控制台。