python读取以非换行符分隔的超大文件,并逐行输出

def myreadline(f, newline):
    buf = ""
    while True:
        while True:
            pos = buf.index(newline)
            yield buf[:pos]
            buf = buf[pos + len(newline)]

        chunk = f.read(4096)

        if not chunk:
            # 已读到结尾
            yield buf
            break
        buf += chunk

with open("input.txt") as f:
    for line in myreadline(f, "{|}":
        print (line)

原文地址:https://www.cnblogs.com/sqtu/p/10568906.html

时间: 2024-11-08 21:48:19

python读取以非换行符分隔的超大文件,并逐行输出的相关文章

python 读取一个目录下的所有目录和文件

觉着没事,应该学点东西.找到以前看过的python,试着做了个读取文件的程序.不管效果怎么,总算成功了. #!/usr/bin/python # -*- coding:utf8 -*- import os allFileNum = 0 def printPath(level, path): global allFileNum ''''' 打印一个目录下的所有文件夹和文件 ''' # 所有文件夹,第一个字段是次目录的级别 dirList = [] # 所有文件 fileList = [] # 返回

python实现readline去掉换行符\n

刚刚用python的readline(s)读取文件的发现进行后续处理的时候总是会出现格式上等的一些小错误,后来想起来是因为文件换行符等一些符号(\n\r\t)也会被readline(s)读取到,以下是我用到的小方法 举个栗子吧,以下是我的文件内容: In [1]: cat /tmp/ip.txt 111.231.0.0/16 122.152.0.0/16 140.143.0.0/16 59.110.0.0/16 106.75.0.0/16 将文件读到变量 f 中,然后执行redline发现其实里

python实现readline去掉换行符\n等特殊字符

刚刚用python的readline(s)读取文件的发现进行后续处理的时候总是会出现格式上等的一些小错误,后来想起来是因为文件换行符等一些符号(\n\r\t)也会被readline(s)读取到,以下是我用到的小方法 举个栗子吧,以下是我的文件内容: In [1]: cat /tmp/ip.txt 111.231.0.0/16 122.152.0.0/16 140.143.0.0/16 59.110.0.0/16 106.75.0.0/16 将文件读到变量 f 中,然后执行redline发现其实里

编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.PrintWriter; public class A { public static void main(String[] args) throws Exception { FileManage a = new FileManage("src/main/resources/

python中read,readline,和readlines的区别 并逐行输出

python中有神奇的三种读操作:read.readline和readlines read() ?: 一次性读取整个文件内容.推荐使用read(size)方法,size越大运行时间越长 readline() ?:每次读取一行内容.内存不够时使用,一般不太用 readlines() ? :一次性读取整个文件内容,并按行返回到list,方便我们遍历 下面看代码: #!/usr/bin/python # -*- coding: utf-8 -*- import linecache f = open("

linux下与windows下的换行符

回车符号和换行符号产生背景 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失.     于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符.一

菜鸟教程之工具使用(八)——EGit禁止自动转换回车换行符

众所周知,Windows和Linux系统的回车换行是不一样的.想要进一步了解它们的可以阅读下面的介绍,不感兴趣的可以直接跳过. 产生背景 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这0.2秒里面,又有新的字符传过

SQLLoader8(加载的数据中有换行符处理方法)

SQLLDR加载的数据中有换行符处理方法1.创建测试表: CREATE TABLE MANAGER( MGRNO NUMBER, MNAME VARCHAR2(30), JOB VARCHAR2(30), REMARK VARCHAR2(1000) ); 2.创建控制文件我们可以通过控制文件,在数据加载前处理remark列的数据,将用户指定的"\n"字符替换为chr(10),即标准换行符,创建控制文件如下: LOAD DATA INFILE 'D:\testSqlLoader\ldr_

GitHub 第一坑:换行符自动转换

源起 一直想在 GitHub 上发布项目.参与项目,但 Git 这货比较难学啊.买了一本<Git 权威指南>,翻了几页,妈呀,那叫一个复杂,又是 Cygwin 又是命令行的,吓得我不敢学了. 终于某天发现 GitHub 还有一个 Windows 客户端,试了一下还挺好用.不需要掌握太多的 Git 原理和命令,也可以在 GitHub 上麻溜建项目了,甚是欢喜.可是好景不长,第一次参与开源项目就出洋相了. 经过 小心翼翼地 Fork 了朴灵大大 (@JacksonTian) 的 EventProx