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 ———————————————————————————————————————— ...
随机推荐
- 使用Fidder将生成环境代码映射到本地(文件夹)
匹配生产URL正则表达式 regex:http://www.a.com/statics/js/(.*) 本地路径配置 D:\web\statics\js\$1
- Caffe、TensorFlow、MXnet三个开源库对比+主流分类模型对比
库名称 开发语言 支持接口 安装难度(ubuntu) 文档风格 示例 支持模型 上手难易 Caffe c++/cuda c++/python/matlab *** * *** CNN ** MXNet ...
- Java面试题考点全面总结
我通过两个月的复习拿到了阿里巴巴的 offer,有一些运气,也有一些心得,借着跳槽季来临特此分享出来. 简单梳理一下我的复习思路,同时也希望和大家一起交流讨论,一起学习,如果不对之处欢迎指正一起学习. ...
- 近5年常考Java面试题及答案整理(三)
上一篇:近5年常考Java面试题及答案整理(二) 68.Java中如何实现序列化,有什么意义? 答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写 ...
- ViewPager PagerAdapter not updating the View
There are several ways to achieve this. The first option is easier, but bit more inefficient. Overri ...
- jenkins 启动slave时,找不到合适的java程序
今天添加slave 又不成功,我用右键,发现随意点了java的那个打开,结果刚弹出来就关闭了窗口,显示未启动成功. 真是小白的想法,不过跟工具打交道久了,多少逻辑上想一下不对. 一定是用了不合适的程序 ...
- 如何使用ABBYY FineReader 12将JPEG文件转换成Word文档
日常工作中处理JPEG格式的图像文件时,有时需要转换成Word文档进行编辑,市场上应用而生了很多转换工具,相信不少人听说过OCR(光学字符识别)软件,可以用来转换图像文件,而在OCR软件中, ABBY ...
- play mp3 in c#
using System; using System.Runtime.InteropServices; using System.Text; using System.IO; using System ...
- 剖析Elasticsearch集群系列之三:近实时搜索、深层分页问题和搜索相关性权衡之道
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part03 近实时搜索 虽然Elasticsearch ...
- Django----djagorestframwork使用
restful(表者征状态转移,面向资源编程)------------------------------------------->约定 从资源的角度审视整个网络,将分布在网络中某个节点的资源 ...