推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
dbow
V2EX  ›  Python

分享找某个目录里找 top N 大文件的 python 代码.

  •  
  •   dbow ·
    maliubiao · Sep 17, 2014 · 5898 views
    This topic created in 4439 days ago, the information mentioned may be changed or developed.
    代码:
    url://gist.github.com/maliubiao/44d9dc17869b4e5f9925

    使用方法:
    python travfs.py 目录 N, 不写N的话默认为前10大

    有时候下载的文件太多,随处丢找不到了,结果硬盘满了,可以用来找目标清理一下.
    试过Linux, Windows能正常使用, 其它的应该兼容。

    欢迎反馈
    33 replies  •  2014-09-18 10:33:27 +08:00
    Lycnir
    Lycnir
    Sep 17, 2014
    1
    提个建议 速度有待提升
    xvid73
    xvid73
    Sep 17, 2014
    2
    感觉还要打目录比较麻烦,试试看下面这个能凑合不,列出当前文件夹下的 top10

    alias top10="du -chs *|sort -rh|head -11"
    dbow
    dbow
    OP
    Sep 17, 2014
    3
    @Lycnir linux执行上80%时间消耗在posix_listdir上,这是个C函数,优化得引入C代码,就不能跨平台了。
    insight
    insight
    Sep 17, 2014❤️1
    5
    Windows Directory Statistics
    https://windirstat.info/
    dbow
    dbow
    OP
    Sep 17, 2014
    6
    @flyee 赞,ncdu纯C写的非常快, 目录较深的话得多按几下。
    xjx0524
    xjx0524
    Sep 17, 2014
    7
    我想看手机sd卡里存储文件大小,大多数软件不支持,有推荐的没?
    ChanneW
    ChanneW
    Sep 17, 2014
    8
    不包含隐藏文件?
    dbow
    dbow
    OP
    Sep 17, 2014
    9
    @xjx0524 挂载手机SD卡到电脑上,然后使用这个程序.
    hahastudio
    hahastudio
    Sep 17, 2014
    10
    果然还是 sort 比 heapq.nlargest 快一些= =
    dbow
    dbow
    OP
    Sep 17, 2014
    11
    @ChanneW 当然包含隐藏文件。
    ChanneW
    ChanneW
    Sep 17, 2014
    12
    sort_files 排的太多了
    ChanneW
    ChanneW
    Sep 17, 2014
    13
    @dbow
    ```
    if d.startswith("."):
    return
    ```
    dbow
    dbow
    OP
    Sep 17, 2014
    14
    @ChanneW 这个对性能的影响可以忽略,主要还是python的posix_listdir C函数速度慢。
    dbow
    dbow
    OP
    Sep 17, 2014
    15
    @ChanneW 这两句没影响,为了输出文件名时是绝对路径, 传参数的时候已经abspath过了.
    codeninja
    codeninja
    Sep 17, 2014 via Android
    16
    ls -lSh | more 不就行了?
    dbow
    dbow
    OP
    Sep 17, 2014
    17
    @codeninja travfs.py是遍历所有子目录的。
    ChanneW
    ChanneW
    Sep 17, 2014
    18
    @dbow 那要这两句代码干什么?
    dbow
    dbow
    OP
    Sep 17, 2014
    19
    @ChanneW 防止当做模块调用的时候,传过来一个相对路径。
    ChanneW
    ChanneW
    Sep 17, 2014
    20
    @dbow 那模块调用的时候隐藏文件不就被忽略了?
    dbow
    dbow
    OP
    Sep 17, 2014
    21
    @ChanneW 不会被忽略,你仔细想想.
    ChanneW
    ChanneW
    Sep 17, 2014
    22
    @dbow 类型不对报错?
    ChanneW
    ChanneW
    Sep 17, 2014
    23
    还是把 abspath 放进来好吧, 这样就统一了.
    xjx0524
    xjx0524
    Sep 17, 2014
    24
    计算机\MI 2\内存设备
    没法在命令行确定这个路径 A-Z都不是
    dbow
    dbow
    OP
    Sep 17, 2014
    25
    @xjx0524 假定你用的是windows 7或者以上的系统, 1, 执行wmic, 2, 在弹出的窗口里输入logicaldisk get name, size, volumename, 确定你SD卡的盘符,然后执行python travfs.py 盘符
    imn1
    imn1
    Sep 17, 2014
    26
    未细看思路——我理解能力比较慢,见谅
    说些细节
    首先我喜欢用os.walk做这种dirty work,git上面有个修改版比py原生的os.walk更快(现在身边没有py,记不起项目名)

    下面一些量大可以考虑优化
    路径计算其实string方式比os.path的函数更快
    有些for可以写成map或表达式
    如果最初的获取路径不涉及排序,可以考虑字典或set保存
    部分函数用yield试试

    这个如果全盘搜索我会考虑加入pandas
    如果仅仅为了“找出top N”这个目的用pandas当然有点过分,不过我做文件搜索往往有其他需求,加pandas处理极大量的路径很方便
    xjx0524
    xjx0524
    Sep 17, 2014
    27
    @dbow 3个硬盘,1个dvd,1个小米搞出来的小米助手安装程序,sd卡在便携设备那里,没有盘符
    dbow
    dbow
    OP
    Sep 17, 2014
    28
    @xjx0524 没有盘符是没办法访问的,把SD挂载到某个盘符才行。
    gerorim
    gerorim
    Sep 17, 2014 via Android
    29
    @xjx0524

    preview:


    store:
    gerorim
    gerorim
    Sep 17, 2014 via Android❤️1
    30
    https://play.google.com/store/apps/details?id=com.google.android.diskusage

    手機端 GUI 比起 CLI 會友好、直觀些。

    誤點回复了。。
    xjx0524
    xjx0524
    Sep 17, 2014
    31
    @gerorim 好用 非常感谢!
    gateswong
    gateswong
    Sep 18, 2014
    32
    其实 各个系统的文件浏览器都有按照文件大小,创建时间排序的

    你稍微排序一下就可以清理了啊
    shyrock
    shyrock
    Sep 18, 2014
    33
    看到有人推荐 WinDirStat,不知道这个比TreeSize效率如何?
    顺便,TreeSize貌似跨平台。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   945 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.