显示文件和大小缓慢命令 - python

此命令获取所有文件和大小

find . -type f | xargs -I x du -s x > /tmp/asd

比这个python脚本慢1000倍

import os
for dirpath, dirnames, filenames in os.walk("."):
    for f in filenames:
        print(f)
        fp = os.path.join(dirpath, f)
        if os.path.isfile(fp):
            print(os.path.getsize(fp))

我在bash脚本中做错什么了吗?
目录结构有500万个文件

参考方案

我建议使用以下内容:

find . -type f -exec stat --printf='%n %s\n' {} +

性能的主要提高来自避免为find匹配的每个文件生成新进程。可以使用xargs完成此操作,但是由于find完全能够根据匹配的文件执行命令,因此我们最好删除另一个进程。
使用find可以通过使用-exec ... +(而不是-exec ... \;)来完成,这将产生尽可能少的进程(基于操作系统支持的最大参数数量)。

此外,我们使用更基本的stat而不是du来查询文件的大小,该大小更接近于您在python脚本中所做的工作。

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python:集群作业管理 - python

我在具有两个阶段的计算群集(Slurm)上运行python脚本,它们是顺序的。我编写了两个python脚本,一个用于阶段1,另一个用于阶段2。每天早上,我检查所有第1阶段的工作是否都以视觉方式完成。只有这样,我才开始第二阶段。通过在单个python脚本中组合所有阶段和作业管理,是否有一种更优雅/自动化的方法?我如何知道工作是否完成?工作流程类似于以下内容:w…

Shell脚本如何从自身内部执行另一个Shell脚本 - python

我的问题是,shell脚本如何执行在新进程中生成的另一个shell脚本?还是在与调用它的脚本相同的过程中执行?一个示例是一个Python脚本,该脚本在满足条件后从Shell脚本执行,还有人如何编写此Shell脚本,使其生成Python脚本,然后退出自身而不会杀死Python脚本 python大神给出的解决方案 是的,如果您在外壳程序中调用外壳程序脚本,外壳程…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…