前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python开发【笔记】:从海量文件的目

Python开发【笔记】:从海量文件的目

作者头像
py3study
发布2020-01-16 22:52:46
6030
发布2020-01-16 22:52:46
举报
文章被收录于专栏:python3python3

Python获取文件名的方法性能对比

前言:平常在python中从文件夹中获取文件名的简单方法   os.system('ll /data/')   但是当文件夹中含有巨量文件时,这种方式完全是行不通的;

在/dd目录中生成了近6百万个文件,接下来看看不同方法之间的性能对比,快速生成文件的shell脚本  

代码语言:javascript
复制
for i in $(seq 1 1000000);do echo text >>$i.txt;done

 1、系统命令 ls -l

代码语言:javascript
复制
# 系统命令 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 模块

代码语言:javascript
复制
# 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 模块

代码语言:javascript
复制
# 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 模块

代码语言:javascript
复制
# 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命令

代码语言:javascript
复制
# 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 命令 不进行排序

代码语言:javascript
复制
# 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

代码语言:javascript
复制
# os.listdir

import os
import time


start = time.time()
result = os.listdir('/dd')
for file in result:
    pass
print(time.time()-start)

# 2.6720399856567383
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python获取文件名的方法性能对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档