python大型项目包含哪些文件可以删除_Python3项目删除__pycache__文件夹和.pyc文件...

Aaron Hall..

61

macOS和Linux

BSD find在macOS上的实现与GNU find不同 - 这与BSD和GNU find都兼容.从一个globbing实现开始,使用-name和-ofor 或 - 将此函数放入您的.bashrc文件中:

pyclean () {

find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete

}

然后cd到要递归清理的目录,然后键入pyclean.

GNU find-only

这是一个GNU查找,只有(即Linux)解决方案,但我觉得正则表达式更好一点:

pyclean () {

find . -regex '^.*\(__pycache__\|\.py[co]\)$' -delete

}

任何平台,使用Python 3

在Windows上,你甚至可能没有find.但是,你可能有Python 3,从3.4开始有一个方便的pathlib模块:

python3 -c "import pathlib; [p.unlink() for p in pathlib.Path('.').rglob('*.py[co]')]"

python3 -c "import pathlib; [p.rmdir() for p in pathlib.Path('.').rglob('__pycache__')]"

这会滥用列表对循环的理解,但在使用时python -c,样式是次要问题.或者我们可以滥用(例如)__import__:

python3 -c "for p in __import__('pathlib').Path('.').rglob('*.py[co]'): p.unlink()"

python3 -c "for p in __import__('pathlib').Path('.').rglob('__pycache__'): p.rmdir()"

批评答案

最常见的答案是:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

这似乎效率较低,因为它使用三个进程.find采用正则表达式,因此我们不需要单独调用grep.同样的,它有-delete,所以我们并不需要单独调用rm-和违背评论在这里,它会这么长时间删除非空目录,因为他们得到凭借正则表达式匹配的清空.

从xargs手册页:

find /tmp -depth -name core -type f -delete

在目录/ tmp中或下面找到名为core的文件并删除它们,但比前一个示例更有效(因为我们避免使用fork(2)和exec(2)来启动rm而我们不需要额外的xargs过程).

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值