Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比
Python获取文件名的方法性能对比
前言:平常在python中从文件夹中获取文件名的简单方法 os.system('ll /data/') 但是当文件夹中含有巨量文件时,这种方式完全是行不通的;
在/dd目录中生成了近6百万个文件,接下来看看不同方法之间的性能对比 快速生成文件的shell脚本
for i in $(seq 1 1000000);do echo text >>$i.txt;done
1、系统命令 ls -l
# 系统命令 ls -l import time
import subprocess start = time.time()
result = subprocess.Popen('ls -l /dd/', stdout=subprocess.PIPE,shell=True) for file in result.stdout:
pass
print(time.time()-start) # 直接卡死
2、glob 模块
# glob 模块 import glob
import time start = time.time()
result = glob.glob("/dd/*")
for file in result:
pass
print(time.time()-start) # 49.60481119155884
3、os.walk 模块
# os.walk 模块 import os
import time start = time.time()
for root, dirs, files in os.walk("/dd/", topdown=False):
pass
print(time.time()-start) # 8.906772375106812
4、os.scandir 模块
# os.scandir 模块 import os
import time start = time.time()
path = os.scandir("/dd/")
for i in path:
pass
print(time.time()-start) # 4.118424415588379
5、shell find命令
# shell find命令 import time
import subprocess start = time.time()
result = subprocess.Popen('find /dd/', stdout=subprocess.PIPE,shell=True) for file in result.stdout:
pass
print(time.time()-start) # 6.205533027648926
6、shell ls -1 -f 命令 不进行排序
# shell ls -1 -f 命令 import time
import subprocess start = time.time()
result = subprocess.Popen('ls -1 -f /dd/', stdout=subprocess.PIPE,shell=True) for file in result.stdout:
pass
print(time.time()-start) # 3.3476643562316895
7、os.listdir
# os.listdir import os
import time start = time.time()
result = os.listdir('/dd')
for file in result:
pass
print(time.time()-start) # 2.6720399856567383
Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比的更多相关文章
- python学习笔记八:文件与目录
一.文件的打开和创建 1.打开 open(file,mode): >>>fo = open('test.txt', 'r') >>>fo.read() 'hello ...
- Java学习-043-获取文件在目录中的路径
我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...
- python笔记4-遍历文件夹目录os.walk()
前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...
- Java开发笔记(序)章节目录
现将本博客的Java学习文章整理成以下笔记目录,方便查阅. 第一章 初识JavaJava开发笔记(一)第一个Java程序Java开发笔记(二)Java工程的帝国区划Java开发笔记(三)Java帝国的 ...
- lib/sqlalchemy/cextension/processors.c:10:20: 致命错误: Python.h:没有那个文件或目录
本文地址:http://www.cnblogs.com/yhLinux/p/4063444.html $ sudo easy_install sqlalchemy [sudo] password fo ...
- 致命错误: Python.h:没有那个文件或目录
In file included from greenlet.c:5:0: greenlet.h:8:20: 致命错误: Python.h:没有那个文件或目录 编译中断. error: Setup s ...
- Python开发【第一篇】:目录
本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python开发[第一篇]:目录 Python开发[第二篇]:初识Python ...
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...
- 解决 Python.h:没有那个文件或目录 错误的方法
http://www.cnblogs.com/yuxc/archive/2012/05/13/2498019.html ———————————————————————————————————————— ...
随机推荐
- 推荐几个Windows工具软件: ASuite - 便携的程序启动器
主页: http://asuite.sourceforge.net 下载: http://sourceforge.net/projects/asuite/ ASuite is a lightweigh ...
- 基于Extjs 4.2的通用权限管理系统,通用后台模板,EF+MVC+Extjs 4.2
基于Extjs 4.2的通用权限管理系统,通用后台. 我们的宗旨:珍爱生命,拒绝重复!Don't Repeat Yourself!!! 本案例采用EntityFramework+MVC4.0+Extj ...
- 关于使用maven打包如何聚合资源文件
多数情况下,我们使用maven管理多个子工程,在最后maven打包阶段将多个子工程聚合到一个jar或war包.单个子工程会有自己独立的资源配置文件,在打包的时候我们需要将其聚合在一起(各子工程中的配置 ...
- 阿里云ECS服务器主机安装多个网站
web|服务器|站点 Windows 2000 Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务.在中小型局域网中,服务器往往只有一台,但是一个Web站点显然 ...
- Mac 卸载 Jenkins
Jenkins的安装方式不同(Mac 安装 Jenkins),卸载方法也不同. 一.通过安装包安装的卸载方式 打开终端,执行 ~ /Library/Application\ Support/Jenki ...
- phpstrom2018
http://www.oyksoft.com/soft/40722.html?pc=1
- Nginx-介绍nginx的两篇博客
1. 一篇博客1.1)文章中间介绍配置文件的结构1.2)文章末尾可设置拒绝的ip,允许的ip博客地址:http://www.cnblogs.com/knowledgesea/p/5175711.htm ...
- 【netcore入门】在Windows IIS上部署.NET Core 2.1项目
部署之前先检查下面2个先决条件是否满足 1.安装了 IIS 模块 win7 在 控制面板→程序和功能→打开或关闭Windows功能→勾选Internet 信息服务(Internet Informati ...
- 导入日志文件到mysql数据库表
#!/bin/bash #**************************************************************************** #***将/usr/ ...
- MFC接收命令行参数的三种方法
方法一: CString sCmdline = ::GetCommandLine(); AfxMessageBox(sCmdline); 将获取到 "C:\test\app.exe -1 - ...