Read a large file with python
python读取大文件
- 较pythonic的方法,使用with结构
- 文件可以自动关闭
- 异常可以在with块内处理
with open(filename, 'rb') as f:
for line in f:
<do someting with the line>
最大的优点:对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。
There should be one – and preferably only one – obvious way to do it.
- 使用生成器generator
如果想对每次迭代读取的内容进行更细粒度的处理,可以使用yield生成器来读取大文件
def readInChunks(file_obj, chunkSize=2048):
"""
Lazy function to read a file piece by piece.
Default chunk size: 2kB.
"""
while True:
data = file_obj.read(chunkSize)
if not data:
break
yield data
f = open('bigFile')
for chunk in readInChunks(f):
do_something(chunk)
f.close()
- linux下使用split命令(将一个文件根据大小或行数平均分成若干个小文件)
wc -l BLM.txt # 读出BLM.txt文件一共有多少行
# 利用split进行分割
split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_
# 将 文件 BLM.txt 分成若干个小文件,每个文件2482行(-l 2482),文件前缀为BLM_ ,系数不是字母而是数字(-d),后缀系数为四位数(-a 4)
# 按行数分割
split -l 300 large_file.txt new_file_prefix
# 文件大小分割
split -b 10m server.log waynelog
# 对文件进行合并:使用重定向,'>' 写入文件 , '>>' 追加到文件中
cat file_prefix* > large_file
在工作中的日常: 用户信息,log日志缓存,等都是大文件
补充:linecache模块
当读取一个文件的时候,python会尝试从缓存中读取文件内容,优化读取速度,提高效率,减少了I/O操作
linecache.getline(filename, lineno) 从文件中读取第几行,注意:包含换行符
linecache.clearcache() 清除现有的文件缓存
linecache.checkcache(filename=None) 检查缓存内容的有效性,可能硬盘内容发生改变,更新了,如果没有参数,将检查缓存中的所有记录(entries)
import linecache
linecache.getline(linecache.__file__, 8)
题目:
现给一个文件400M(该文件是由/etc/passwd生成的),统计其中root字符串出现的次数
import time
sum = 0
start = time.time()
with open('file', 'r') as f:
for i in f:
new = i.count('root')
sum+=new
end = time.time()
print(sum, end-start)
注:有时候这个程序比c,shell快10倍,原因就是,python会读取cache中的数据,使用缓存在内部进行优化,减少i/o,提高效率
References : How to read a large file
Read a large file with python的更多相关文章
- Read Large Files in Python
I have a large file ( ~4G) to process in Python. I wonder whether it is OK to "read" such ...
- Github Upload Large File 上传超大文件
Github中单个文件的大小限制是100MB,为了能突破这个限制,我们需要使用Git Large File Storage这个工具,参见这个官方帖子,但是按照其给的步骤,博主未能成功上传超大文件,那么 ...
- read content in a text file in python
** read text file in pythoncapability: reading =text= from a text file 1. open the IDLE text editor ...
- Combining an audio file with video file in python
Combining an audio file with video file in python - Stack Overflow https://stackoverflow.com/questio ...
- Java – Reading a Large File Efficiently--转
原文地址:http://www.baeldung.com/java-read-lines-large-file 1. Overview This tutorial will show how to r ...
- [PySpark] RDD programming on a large file
重难点 一.parallelize 方法 一般来说,Spark会尝试根据集群的状况,来自动设定slices的数目.然而,你也可以通过传递给parallelize的第二个参数来进行手动设置. data_ ...
- download file by python in google colab
https://stackoverflow.com/questions/15352668/download-and-decompress-gzipped-file-in-memory You need ...
- How do I get the path of the current executed file in Python?
First, you need to import from inspect and os from inspect import getsourcefile from os.path import ...
- Base64 encode/decode large file
转载:http://www.cnblogs.com/jzywh/archive/2008/04/20/base64_encode_large_file.html The class System.Co ...
随机推荐
- unistd.h文件
转载地址:http://baike.baidu.com/link?url=nEyMMFYevs4yoHgQUs2bcfd5WApHUKx0b1ervi7ulR09YhtqC4txmvL1Ce3FS8x ...
- Two ways to assign values to member variables
setXxx()方法,带参数的构造方法.类名作为形式参数,其实里面需要传入一个该类的对象.类名作为返回值,其实返回的是一个该类的对象.
- volley7--NetworkDispatcher从网络中获取数据
源码: /* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, V ...
- linux下C语言三种get输入方式
第一种:scanf() #include "stdio.h" #include "string.h" int main() { ]; scanf("% ...
- 【Android Studio使用教程1】Android Studio导入项目的几种方法
本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4.请尝试更新到该版本. Android Studio默认使用 Gradle 构建项目, Eclips ...
- Selenium对浏览器的支持
1.火狐浏览器 优点:FireFox Dirver对页面的自动化测试支持得比较好,很直观地模拟页面的操作,对JavaScript的支持也非常完善,基本上页面上做的所有操作FireFox Driver都 ...
- 算法之求质数(Java语言)
质数(Prime number) 又称素数,指在的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个因数的数). 算法原理 验证一个数字 n 是否为素数的一种简单但 ...
- 求最大公约数和最大公倍数(Java算法)
最大公约数(最大公因数):指某几个整数共有约数中最大的一个. 求两个整数最大公约数主要的方法: 列举法:各自列出约数,再找出最大的公约数. 素因数分解法:两数各作素因数分解,然后取出共有的项乘起来. ...
- Azure School 终于上线了,物联网开发课程先走一波~
要说目前最热门的技术是什么,物联网(IoT)肯定荣登榜首!老牌科技企业早已涉足,新晋初创公司层出不穷,就连很多传统企业也开始试水这一领域…… 物联网,说小其实挺小,工业仪表.汽车飞机,甚至家用电器,专 ...
- Linux 配置samba服务实现与Windows文件共享
目录: 1.samba服务介绍 2. 安装samba服务和客户端 3.samba配置文件详解 4.配置实例 5.客户端挂载与测试 6.samba排错 1.Samba服务介绍 Samba 最先在 ...