由于增加了从文件中选择的行在统计上必须均匀分布的要求,因此我提供了这种简单的方法。

"""randsamp - extract a random subset of n lines from a large file"""

import random

def scan_linepos(path):

"""return a list of seek offsets of the beginning of each line"""

linepos = []

offset = 0

with open(path) as inf:

# WARNING: CPython 2.7 file.tell() is not accurate on file.next()

for line in inf:

linepos.append(offset)

offset += len(line)

return linepos

def sample_lines(path, linepos, nsamp):

"""return nsamp lines from path where line offsets are in linepos"""

offsets = random.sample(linepos, nsamp)

offsets.sort() # this may make file reads more efficient

lines = []

with open(path) as inf:

for offset in offsets:

inf.seek(offset)

lines.append(inf.readline())

return lines

dataset = "big_data.txt"

nsamp = 5

linepos = scan_linepos(dataset) # the scan only need be done once

lines = sample_lines(dataset, linepos, nsamp)

print "selecting %d lines from a file of %d" % (nsamp, len(linepos))

print "".join(lines)

我在一个包含1.7GB磁盘的300万行的模拟数据文件上进行了测试。 在我不太热的台式机上,nsamp占据了运行时间约20秒的时间。

只是为了检查nsamp的性能,我使用了nsamp模块

import timeit

t = timeit.Timer("sample_lines(dataset, linepos, nsamp)",

"from __main__ import sample_lines, dataset, linepos, nsamp")

trials = 10 ** 4

elapsed = t.timeit(number=trials)

print u"%dk trials in %.2f seconds, %.2fµs per trial" % (trials/1000,

elapsed, (elapsed/trials) * (10 ** 6))

对于nsamp的各种值; 当nsamp为100时,单个sample_lines在460µs内完成并线性扩展至10k样本,每次调用时间为47ms。

自然而然的下一个问题是“随机”根本不是随机的吗?答案是“亚密码学,但对于生物信息学当然很好”。

python读行-Python如何一次读取N行相关推荐

  1. python读docx文件_python-docx文件定位读取过程(尝试替换)

    python-docx文件定位读取过程(尝试替换) 以上是开头,安装完后需要导入转载的代码读取所有docx文件中的内容发现没有读取到表格数据: from docx import Document de ...

  2. python如何读取文件中第一行的元素_python txt读取第一行数据库

    带你读<Python数据分析与数据化运营(第2版)>之一:Python和数据化运营 点击查看第二章点击查看第三章Python数据分析与数据化运营(第2版) 宋天龙 著 第1章 Python ...

  3. python读啥-Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  4. python读什么-python读什么

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 注意: 您目前查阅的是历史版本 sdk 文档,已不再更新和维护,我们建议您查阅新版 ...

  5. python读数据-python数据读写

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 读写json文件的文档docimport jsondirectory = ...

  6. 读取第n行python_Python如何一次读取N行

    我正在编写一个代码,一次取一个巨大的文本文件(几GB)N行,处理该批处理,然后移到下一行N行,直到我完成整个文件. (我不在乎最后一批是不是完美的尺寸). 我一直在阅读有关使用itertools is ...

  7. python读文件每一行、并把这行替换-python基础--文件操作实现全文或单行替换

    python修改文件时,使用w模式会将原本的文件清空/覆盖.可以先用读(r)的方式打开,写到内存中,然后再用写(w)的方式打开. 替换文本中的taste 为 tasting Yesterday whe ...

  8. python读文件每一行、并把这行替换-Python按行读文件

    1. 最基本的读文件方法: # File: readline-example-1.py file = open("sample.txt") while 1: line = file ...

  9. python读excel中数据画图_python读取excel数据并且画图的实现示例

    一,要读取的数据的格式: 二,数据读取部分: b站视频参考:https://www.bilibili.com/video/BV14C4y1W7Nj?t=148 # 1930 workbook=xlrd ...

  10. python读数据-python读取各种文件数据方法解析

    python读取.txt(.log)文件 ..xml 文件 .excel文件数据,并将数据类型转换为需要的类型,添加到list中详解 1.读取文本文件数据(.txt结尾的文件)或日志文件(.log结尾 ...

最新文章

  1. HDU 1430 关系映射 + 打表 .
  2. 卷及神经网络CNN for image retrieval
  3. electron调试html,electron桌面应用程序开发入门
  4. 写最少的代码,避免给自己找麻烦
  5. 用asp.net编写冒泡排序法
  6. WCF简单教程(5) 用IIS做Host
  7. Golang——单元测试testing
  8. c++中的运算符异或^,与,或|
  9. java中文文档官方下载
  10. MongoDB 安装配置
  11. 为什么你就是学不会 Numpy ? | 技术头条
  12. 【渝粤教育】国家开放大学2018年秋季 0690-22T化工原理及实验 参考试题
  13. Windows命令行快速启动快捷方式
  14. android 更新相册,Android 图片存入系统相册更新显示实例详解
  15. oracle11g基于bootstrap$中的ind$表损坏系列五
  16. 条件运算符的嵌套使用
  17. css选择器有哪些?
  18. ARouter there is no route matched
  19. Unity SWS自动寻路插件
  20. JS如何区分微信浏览器、QQ浏览器和QQ内置浏览器,解决 ios 无法判断是否为qq浏览器环境的问题。

热门文章

  1. oracle关闭数据库容器,Oracle12cr1新特性之容器数据库(CDB)和可插拔数据库(PDB) 的启动和关闭...
  2. python椭圆识别_Python+pillow计算椭圆图形几何中心
  3. php显示图片缩略图,使用ThinkPHP生成缩略图及显示的方法
  4. android json字符串转成json对象_C++ 两行代码实现json与类对象互转
  5. java可以连接php吗_java - 需要PHP或Java代码才能使用多个Internet连接
  6. python中openpyxl的使用
  7. principle中文_principle与principal,长得像,发音还一样!又头疼了!
  8. vue实现留言板的功能_基于vue和bootstrap实现简单留言板功能
  9. python open函数参数_python open函数的用法笔记
  10. oracle主备不同步,主备环境下数据不一致重新部署复制