Python-python扫描文件

Python-python扫描文件

夜无邪 发布于 2017-07-27 字数 93 浏览 1193 回复 1

有个文件夹下面会不间断的动态生成一些文件,如何实现不断获取所有文件名?包括后续生成的。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑾兮 2017-10-29 1 楼

解决方法:第一次程序执行时候,扫描指定目录.把目录下的所有文件信息存入记录文件.从第二次执行开始,先从记录文件中读取文件名列表,然后与指定目录下文件进行比对,新增加的文件会追加到记录文件中.
至于要让程序定时执行,我认为这就更简单了,写个操作系统的定时任务脚本,这里我就不给答案了。程序代码如下:(我测试环境是win7,python2.52,如果是linux请自行修改读取文件路径的根符号)

#-*- coding utf8 -*-

'''
@Deprecations:第一次程序执行时候,扫描指定目录.
把目录下的所有文件信息存入记录文件.从第二次执
行开始,先从记录文件中读取文件名列表,然后与指
定目录下文件进行比对,新增加的文件会追加到记录文件中.
@notes:测试环境win7,python2.52
@author:rayment
@version:1.0
'''

import os.path

def isExists(saveFile):
'''
判断文件是否存在
@param :保存输出文件信息的文件
'''
return os.path.isfile(saveFile)

def getFileName(targetDir, flag):
'''
扫描指定目录,获得文件名称列表
@param :指定的扫描目录
@param :是否增加回车字符标志
'''
export = []
for root, dirs, fileNames in os.walk(targetDir):
if fileNames:
for filename in fileNames:
export.append(os.path.join(root, filename))
if flag == 1:
export.append("n")
return export

def Scanner(targetDir, saveFile):
'''
第一次扫描文件函数
@param :指定的扫描目录
@param :保存输出文件信息的文件
'''

file = open(saveFile, 'w')
file.write(''.join(getFileName(targetDir, 1)[:-1]))
file.close()

def reScanner(targetDir, saveFile):
'''
再次扫描文件函数
@param :指定的扫描目录
@param :保存输出文件信息的文件
'''

filelist = []
#读取保存文件内的文件名称
read = open(saveFile, 'r')
line = read.readline()
while line:
#去掉每行字符窜内的回车符
filelist.append(line.replace('n', ''))
line = read.readline()
read.close()
#获得指定目录下文件名称
scanlist = getFileName(targetDir, 0)
newlist = []
fileset = set(filelist)
scanset = set(scanlist)
#把上次扫描的文件信息与当前扫描的文件信息对比,找出新增文件
newlist = [i for i in fileset^scanset]
#如果有新增文件就追加保存到输出文件中
if newlist.__len__() > 0:
file = open(saveFile, 'a')
for addfile in newlist:
file.write("n"+addfile)
file.close()

if __name__ == '__main__':
#如果是linux系统,请修改''符号
Dir = 'd:SplitIt'
myFile = 'd:myscan.txt'
if isExists(myFile):
reScanner(Dir, myFile)
else:
Scanner(Dir, myFile)