需要遍历当前目录并在最后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:需要字符串或缓冲区,找到元组
我想了解在我继续之前导致这种情况的原因
答案 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。
答案 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
它以递归方式检查当前目录以查找对文件的更改,并将任何更改记录到控制台。