linux 大文件生成器,扫描整台linux机器 找到最大的那个文件

"""

找到任意目录树里所有给定类型中的最大的那个

避免重复路径,捕获错误,添加追踪和行数大小。

同样使用集合,文件迭代器和生成器以避免装载

整个文件,并试图绕过不可解码的目录/文件名称

的打印。

"""

import os,pprint

from sys import argv,exc_info

#0代表关闭,1代表目录,2代表加上文件

trace=1

dirname,extname=os.curdir,'.py'

if len(argv)>1: dirname=argv[1]

if len(argv)>2: extname=argv[2]

if len(argv)>3: trace=int(argv[3])

def tryprint(arg):

try:

#不能打印的文件名

print(arg)

except UnicodeEncodeError:

print(arg.encode())

visited=set()

allsizes=[]

for (Dir,SubDir,Files) in os.walk(dirname):

if trace: tryprint(Dir)

Dir=os.path.normpath(Dir)

fixname=os.path.normcase(Dir)

if fixname in visited:

if trace: tryprint('....skipping...',Dir)

else:

visited.add(fixname)

for filename in Files:

if filename.endswith(extname):

if trace > 1: tryprint(filename)

fullname=os.path.join(Dir,filename)

try:

bytesize=os.path.getsize(fullname)

linesize=sum(+1 for line in open(fullname,'rb'))

except Exception:

print('error',exc_info()[0])

else:

allsizes.append((bytesize,linesize,fullname))

for (title,key) in [('bytes',0),('lines',1)]:

print('\\nBy %s...' % title)

allsizes.sort(key=lambda x: x[key])

pprint.pprint(allsizes[:3])

pprint.pprint(allsizes[-3:])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值