python读取大文件|python如何读取文件的内容

python读取大文件|python如何读取文件的内容的第1张示图

Ⅰ python对文本文件的读有哪些方法,写有哪些方法

1 文件读取全文本操作在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,read():读取文件的全部内容,加上参数可以指定读取的字符。readline():读取文件的一行。readlines():读取文件的所有行到内存中。不同场景下我们可以选择不同函数对文件进行读取。1.1 方法一file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt=file.read()# 全文本的处理file.close()使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。1.2 方法二file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")txt= file.read(4)# 文本的处理while txt != ""txt= file.read(4)# 批量文本处理file.close()这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。1.3 方法三file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r")for line infile.readlines():# 处理每一行数据file.close()这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。1.4 方法四file_name = input("请输入你要打开的文件的完整路径及名称")file= open(file_name, "r") # 这里的file时文件句柄for line infile:# 处理每一行数据file.close()这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。2 文件写入文本操作文件写入有两种写入函数和一种辅助支持。write():向文件中写入一个字符或者字节流writelines():将一个元素全为字符串的列表写入到文件中 需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格 。seek(): 辅助写入函数offset偏移量参数代表含义如下0 – 文件开头1 – 当前位置2 – 文件结尾2.1 方法一file_name = input("output.txt", "w+")text= "hello world!"file_name.write(text)file.close()2.2 方法二file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.writelines(list)for line infile:# 读取写入的数据,这时候发现是没有任何内容的file.close()我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。file_name = input("output.txt", "w+")list= ["中午","早上","晚上"]file_name.readlines(list)file_name.seek(0) # 调整写的指针到文件的开始位置for line infile:# 读取写入的数据,这时候会读出一行写入的数据。file.close()

Ⅱ python如何读取文件的内容

# _*_ coding: utf-8 _*_

import pandas as pd

# 获取文件的内容

def get_contends(path):

with open(path) as file_object:

contends = file_object.read()

return contends

# 将一行内容变成数组

def get_contends_arr(contends):

contends_arr_new = []

contends_arr = str(contends).split(']')

for i in range(len(contends_arr)):

if (contends_arr[i].__contains__('[')):

index = contends_arr[i].rfind('[')

temp_str = contends_arr[i][index + 1:]

if temp_str.__contains__('"'):

contends_arr_new.append(temp_str.replace('"', ''))

# print(index)

# print(contends_arr[i])

return contends_arr_new

if __name__ == '__main__':

path = 'event.txt'

contends = get_contends(path)

contends_arr = get_contends_arr(contends)

contents = []

for content in contends_arr:

contents.append(content.split(','))

df = pd.DataFrame(contents, columns=['shelf_code', 'robotid', 'event', 'time'])

(2)python读取大文件扩展阅读:

python控制语句

1、if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。

2、for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。

3、while语句,当条件为真时,循环运行语句块。

4、try语句,与except,finally配合使用处理在程序运行中出现的异常情况。

5、class语句,用于定义类型。

6、def语句,用于定义函数和类型的方法。

Ⅲ python 读取大文件数据怎么快速读取

python中读取数据的时候有几种方法,无非是read,readline,readlings和xreadlines几种方法,在几种方法中,read和xreadlines可以作为迭代器使用,从而在读取大数据的时候比较有效果.在测试中,先创建一个大文件,大概1GB左右,使用的程序如下:[python] view plainprint?import os.path import time while os.path.getsize('messages') <1000000000: f = open('messages','a') f.write('this is a file/n') f.close() print 'file create complted' 在这里使用循环判断文件的大小,如果大小在1GB左右,那么结束创建文件。–需要花费好几分钟的时间。测试代码如下:[python] view plainprint?#22s start_time = time.time() f = open('messages','r') for i in f: end_time = time.time() print end_time – start_time break f.close() #22s start_time = time.time() f = open('messages','r') for i in f.xreadlines(): end_time = time.time() print end_time – start_time break f.close() start_time = time.time() f = open('messages','r') k= f.readlines() f.close() end_time = time.time() print end_time – start_time 使用迭代器的时候,两者的时间是差不多的,内存消耗也不是很多,使用的时间大概在22秒作用在使用完全读取文件的时候,使用的时间在40s,并且内存消耗相当严重,大概使用了1G的内存。。其实,在使用跌倒器的时候,如果进行连续操作,进行print或者其他的操作,内存消耗还是不可避免的,但是内存在那个时候是可以释放的,从而使用迭代器可以节省内存,主要是可以释放。而在使用直接读取所有数据的时候,数据会保留在内存中,是无法释放这个内存的,从而内存卡死也是有可能的。在使用的时候,最好是直接使用for i in f的方式来使用,在读取的时候,f本身就是一个迭代器,其实也就是f.read方法

Ⅳ python 一个文件太大+内存装不下+怎么读取 mongo

Python 环境下文件的读取问题,请参见拙文Python 基础 —— 文件

这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。

1. read() 接口的问题

f = open(filename, 'rb')f.read()12

我们来读取 1 个 nginx 的日至文件,规模为 3Gb 大小。read() 方法执行的操作,是一次性全部读入内存,显然会造成:

MemoryError…12

也即会发生内存溢出。

2. 解决方案:转换接口

(1)readlines() :读取全部的行,构成一个 list,实践表明还是会造成内存的问题;

for line in f.reanlines(): …

1

2

(2)readline():每次读取一行,

while True:line = f.readline() if not line: break

1

2

3

4

(3)read(1024):重载,指定每次读取的长度

while True: block = f.read(1024) if not block: break

1

2

3

4

3. 真正 Pythonic 的方法

真正 Pythonci 的方法,使用 with 结构:

with open(filename, 'rb') as f: for line in f: <do something with the line>123

对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。

There should be one – and preferably only one – obvious way to do it.

Ⅳ python如何读取文件大小

python读取文件大小的代码如下:[python] view plainimport osfrom os.path import join, getsizedef getdirsize(dir):size = 0Lfor root, dirs, files in os.walk(dir):size += sum([getsize(join(root, name)) for name in files])return sizeif '__name__' == '__main__':filesize = getdirsize(r'c:\windows')print 'There are %.3f' % (size/1024/1024), 'Mbytes in c:\\windows'

Ⅵ python 如何读取大文件

你可以不用一次读完存到内存里,可以一行一行的读,用.readline()读一行处理一行,这样不会占很多内存,多大的文件都没关系

Ⅶ 如何用python快速读取几G以上的大文件

如果你没那么大的内存 解决方法有几个:

使用swap 一次性read()读取

系统层面分割大文件为数版个小于权系统内存的小文件,分别读取

使用python 按数据大小逐块读取,使用完数据即释放该部分内存:

whileTrue:chunk_data=file_object.read(chunk_size)ifnotchunk_data:breakyieldchunk_data

Ⅷ python 最快 读取文本

python是高级语言,文件操作都是用底层接口,速度差别不大

需要注意的是大文件,一次性read()会导致内存溢出

解决方法:

对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。

Ⅸ Python按行读取文件的简单实现方法

Python按行读取文件的简单实现方法下面小编就为大家带来一篇Python按行读取文件的简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。1:readline() file = open("sample.txt") while 1: line = file.readline() if not line: break pass # do somethingfile.close()一行一行得从文件读数据,显然比较慢;不过很省内存;测试读10M的sample.txt文件,每秒大约读32000行;2:fileinput import fileinput for line in fileinput.input("sample.txt"): pass写法简单一些,不过测试以后发现每秒只能读13000行数据,效率比上一种方法慢了两倍多;3:readlines() file = open("sample.txt") while 1: lines = file.readlines(100000) if not lines: break for line in lines: pass # do somethingfile.close()用同样的数据测试,它每秒可以读96900行数据!效率是第一种方法的3倍,第二种方法的7倍!4:文件迭代器每次只读取和显示一行,读取大文件时应该这样: file = open("sample.txt") for line in file: pass # do somethingfile.close()以上就是小编为大家带来的Python按行读取文件的简单实现方法全部内容了

未经允许不得转载:山九号 » python读取大文件|python如何读取文件的内容

赞 (0)