Python 初学笔记:os模块

最近做了一个关于os模块的小练习。附代码:

# del files
import os, pprint

def myfilelist(filedir):
    for fd in os.listdir(filedir):
        filename = filedir + os.sep + fd
        if os.path.isfile(filename):
            yield filename
        elif os.path.isdir(filename):
            for result in myfilelist(filename):
                yield result
        else:
            pass

ds = {}

def _findmaxds(ds = ds):
    if len(ds) <= 0: return
    result = []
    maxvalue = max(ds.values())
    for key in ds:
        if ds[key] == maxvalue:
            result.append(key)
        else:
            pass
    return result

def _updateds(filename, lowerlimit, ds = ds):
    filesize = os.path.getsize(filename)
    if filesize > lowerlimit:
        if ds.has_key(filename):
            ds[filename] += 1
        else:
            ds[filename] = 1
    return (ds, filesize)

def normalsearch(filedir, lowerlimit, ds = ds):
    formatstr = "filename: %s; size (bytes): %d;"
    if os.path.isfile(filedir):
        ds, filesize = _updateds(filedir, lowerlimit)
        print(formatstr % (filedir, filesize))
        if filesize > lowerlimit:
            yield filedir
    elif os.path.isdir(filedir):
        for fd in myfilelist(filedir):
            ds, filesize = _updateds(fd, lowerlimit)
            print(formatstr % (filedir, filesize))
            if filesize > lowerlimit:
                yield fd        
    else:
        pass

def _bayesearchcore(filedir, ds = ds):
    maxds = _findmaxds(ds)
    if maxds:
        for md in maxds:
            if filedir in md:
                yield md
        
def _bayesearch(filedir, lowerlimit):
    for bs in _bayesearchcore(filedir):
        for f in myfilelist(filedir):
            filesize = os.path.getsize(f)
            if filesize > lowerlimit:
                yield f

def search(filedir, lowerlimit):
    blist = list(_bayesearch(filedir, lowerlimit))
    if len(blist) > 0:
        return blist
    else:
        nlist = list(normalsearch(filedir, lowerlimit))
        return nlist

def delfiles(filelist):
    for f in filelist:
        os.remove(f)

def main():
    filedir = raw_input("Please input your file directory: ")
    lowerlimit = raw_input("Please input your limit: ")
    lowerlimit = int(lowerlimit)
    delfiles(search(filedir, lowerlimit))
    
main()

测试功能是删除指定文件夹内所有大于指定文件大小的文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值