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 ———————————————————————————————————————— ...
随机推荐
- java 汉诺塔实现自动演示
1.增加计时功能,显示用户完成移动盘子所花费的时间 2.用户可以设置最大和最小盘子的大小 3.用户可以选择播放和暂停背景音乐 4.用户可以设置盘子的数目 5.用户可以设置盘子的颜色以及背景的颜色 6. ...
- Angular4学习笔记(八)- ng-content
内容投影 ng-content ng-content是一个占位符,有些类似于router-outlet. 以前举の例子,父组件包含子组件都是直接指明子组件的selector,比如子组件的selecto ...
- 从vboot来看:virtualbox 和 vmware 虚拟化软件环境的兼容性(支持能力)的差距真是挺大的!
仅仅就支持vboot启动来说:vwmare 完胜!! 熬了一周,(当前最新版本)用virtualbox 5.22 和 6.0 总是无法完成vboot的正常启动功能:不是蓝屏.就是死慢.要不就直接han ...
- golang IO 流抽象与应用
https://blog.csdn.net/pmlpml/article/details/82930191
- 检测浏览器是否支持某个css属性
以浏览器是否支持translate3d 为例说明,当然现代浏览器已经支持该属性.如果浏览器实现了带有前缀的某个属性,比如说支持-webkit-transform,但是不支持直接写transform,可 ...
- HandlerSocket介绍
HandlerSocket的原理 HandlerSocket的应用场景: MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产 ...
- 10.5Djang admin 管理工具
2018-10-5 17:30:57 Django admin 管理工具 参考连接: https://www.cnblogs.com/yuanchenqi/articles/8323452.html ...
- zabbix监控告警Received empty response from Zabbix Agent Assuming that agent dropped connection
zabbix监控告警Received empty response from Zabbix Agent Assuming that agent dropped connection错误 查看zabbi ...
- 记一次treegrid checkbox 选择问题
最后选择 select 方法来实现 checkRow checked 属性也不行 getChecked 方法并不能取到这两种方法的行数据
- POJ 1655 - Balancing Act - [DFS][树的重心]
链接:http://poj.org/problem?id=1655 Time Limit: 1000MS Memory Limit: 65536K Description Consider a tre ...