首页 / PYTHON / python遍历目录下文件
python遍历目录下文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python遍历目录下文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3991字,纯文字阅读大概需要6分钟。
内容图文
![python遍历目录下文件](/upload/InfoBanner/zyjiaocheng/841/d263b83fee3446df8fc33c0f54e38837.jpg)
#!/usr/bin/python3.5
import os
import sqlite3
from multiprocessing import Process,Queue
import time
##############################################################
DAY_SECONDS = 24*60*60
QUESIZE=1000
# c.execute('''CREATE TABLE memory (user VARCHAR(20), filename VARCHAR(100), size FLOAT, ctime TIMESTAMP, mtime TIMESTAMP, atime TIMESTAMP)''')
def checkFile(file, user, que):
statinfo=os.stat(file)
que.put((user, file, statinfo))
def listDir(dir, user, que):
for file in os.listdir(dir):
path=os.path.join(dir,file)
if(os.path.isfile(path)):
checkFile(path, user, que)
elif(os.path.isdir(path)):
listDir(path, user, que)
#else:
# print("error:",path)
def checkPersonFile(dir, user, que):
if(os.path.exists('log')==False):
os.mkdir('log')
logfile = "log/" + "check_file.log"
f = open(logfile,'a')
msg = 'checking %s ...' % user
print(msg)
f.write(msg+'\n')
listDir(dir,user,que)
msg = 'check %s complete' % user
print(msg)
f.write(msg+'\n')
def write_to_db(que,db):
conn = sqlite3.connect(db)
c = conn.cursor()
cnt = 0
while True:
# if que.empty() or que.full():
# conn.commit()
info = que.get()
if info is None:
break
user = info[0]
file = 'notused'
statinfo = info[2]
c.execute('INSERT INTO memory values (?,?,?,?,?,?)',
(user, file, statinfo.st_size, statinfo.st_ctime, statinfo.st_mtime, statinfo.st_atime))
#conn.commit()
++cnt
if cnt>QUESIZE-100:
cnt=0
conn.commit()
conn.commit()
print('end')
if __name__ == '__main__':
rootDir = "/train/blue/users/"
db="memory.db"
conn = sqlite3.connect(db)
c = conn.cursor()
c.execute('''CREATE TABLE if not exists memory (user VARCHAR(20), filename VARCHAR(100), size FLOAT, ctime TIMESTAMP, mtime TIMESTAMP, atime TIMESTAMP)''')
c.execute('''DELETE FROM memory''')
conn.commit()
processes = list()
que = Queue(QUESIZE)
pdb = Process(target=write_to_db, args=(que,db))
pdb.start()
#processes.append(pdb)
for filename in os.listdir(rootDir):
file = os.path.join(rootDir, filename)
if (os.path.isdir(file)):
user = os.path.basename(file)
p = Process(target=checkPersonFile,args=(file, user, que))
p.start()
processes.append(p)
for p in processes:
p.join()
que.put(None)
pdb.join()
print("check all file complete")
# analyze the data in db
# format
header_format = '%-*s%-*s'
format = '%-*s%-*.2f'
width = 80
user_width = (width / 2).__int__()
memory_width = (width - user_width).__int__()
if(os.path.exists('log')==False):
os.mkdir('log')
logfile = "log/" + "check_file.log"
f = open(logfile,'a')
t = time.strftime("%Y/%b/%d/%H:%M:%S",time.localtime(time.time()))
f.write('*'*80+'\n')
f.write(t+'\n')
head = 'total memory'
left = ((width - len(head)) / 2).__int__()
msg = '*' * left + head + '*' * left
print(msg)
f.write(msg+'\n')
result = c.execute('''SELECT user, sum(size)/(1024*1024) as total_size from memory GROUP BY user ORDER BY total_size DESC''')
for r in result:
msg = format % (user_width, r[0], memory_width, r[1])
# msg=' user:%s, memory:%f' % r
print(msg)
f.write(msg+'\n')
days = [2, 5, 15]
whens = ['ctime', 'mtime', 'atime']
for day in days:
for when in whens:
head = 'latest %d days by %s' % (day,when)
left = ((width - len(head)) / 2).__int__()
msg = '*' * left + head + '*' * left
print(msg)
f.write(msg + '\n')
last_when = time.time() - day * DAY_SECONDS
sql = '''SELECT user, sum(size)/(1024*1024) as total_size from memory where %s < %f GROUP BY user ORDER BY total_size DESC''' % \
(when, last_when)
result = c.execute(sql)
for r in result:
#msg = ' user:%s, memory:%f' % r
msg = format % (user_width, r[0], memory_width, r[1])
print(msg)
f.write(msg + '\n')
# bigger then 4 M
sizes = [4.0*1024*1024]
for size in sizes:
head = 'bigger then %fM total memory:' % (size,)
left = ((width - len(head)) / 2).__int__()
msg = '*' * left + head + '*' * left
print(msg)
f.write(msg + '\n')
sql = '''SELECT user, sum(size)/(1024*1024) as total_size from memory where size > %f GROUP BY user ORDER BY total_size DESC''' % \
(size)
result = c.execute(sql)
for r in result:
# msg = ' user:%s, memory:%f' % r
msg = format % (user_width, r[0], memory_width, r[1])
print(msg)
f.write(msg + '\n')
conn.close()
f.write('*' * 80 + '\n')
f.close()
print('finish')
内容总结
以上是互联网集市为您收集整理的python遍历目录下文件全部内容,希望文章能够帮你解决python遍历目录下文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。