每次生成新文件时都会在一个目录中生成,例如一些日志文件。
我的目的是在10分钟内获得一定数量的文件。为了获得这样的实时值,数据如下:
00:00~00:10 10个文件
00:10~00:20 23档
.......
23:50~23:59 12档
所以我的想法是在Linux系统上通过crontab任务每10分钟运行一次统计脚本。 逻辑第一次运行脚本:通过glob.glob(“*”)获取当前文件列表。
让我说A,所以当脚本下次运行时(10分钟后),它将再次运行“glob”以获取当前文件列表B.我需要不同的值,在B.没有A.所以我可以获得金额。 怎么做 ?如果您有其他好方法,请分享。
答案 0 :(得分:3)
您想查看sets。你可以这样做:
setA = set(listA)
setB = set(listB)
new_list = list(setB - setA)
您还可以执行其他设置逻辑来识别已删除的文件等。
答案 1 :(得分:0)
正如我对@ tcaswell的answer所评论的那样,使用Python的内置集合类是解决这类问题的绝佳方法。这里有一些示例代码,基于Tim Golden的Python Stuff文章Watch a Directory for Changes:
import os
firstime = False
path_to_watch = '.'
try:
with open('filelist.txt', 'rt') as filelist:
before = set(line.strip() for line in filelist)
except IOError:
before = set(os.listdir(path_to_watch))
firstime = True
if firstime:
after = before
else:
after = set(os.listdir(path_to_watch))
added = after-before
removed = before-after
if added:
print 'Added: ', ', '.join(added)
if removed:
print 'Removed: ', ', '.join(removed)
# replace/create filelist
with open('filelist.txt', 'wt') as filelist:
filelist.write('\n'.join(after) + '\n')