Python 文件操作续

上一篇:文件基本操作

文件的相关函数

1、readline()功能:读取一行内容
readline(字符数):如果给的参数大于当前行字符数,只获取当前行所有内容
如果给参数小于当前行的字符数,按照实际给的参数进行字符的获取

E:\测试.txt 文件内容:
你好
Hello,world
请说再见

with open('E:\测试.txt',mode='r+',encoding='gbk') as demo:
    demos = demo.readline(3)
    while demos:
        print(demos)
        demos = demo.readline(3)

运行结果:

你好

Hel
lo,
wor
ld

请说再
见

2、readlines()功能:将文件中的内容按照换行读取

还以测试.txt为例

with open('E:\测试.txt',mode='r+',encoding='gbk') as demo:
    demos = demo.readlines()
    for i in demos:
        print(i)

运行结果:

你好

Hello,world

请说再见

3、writelines()功能:将内容是字符串的可迭代性数据写入文件中。需要一个参数,注意参数内容为字符串类型的可迭代数据
with open('E:\测试.txt',mode='r+',encoding='gbk') as demo:
    list1 = ['\n假书生','学习python']
    demo.writelines(list1)
    demos = demo.readlines()
    for i in demos:
        print(i)

运行结果:

你好

Hello,world

请说再见

假书生学习python

4、truncate()功能:要把截取的字符串提取出来,然后清空后面的内容
with open('E:\测试.txt',mode='r+',encoding='utf-8') as demo:
    demo.write("hello,world")
    demo.truncate(5)
    demo.seek(0)
    print(demo.read())

运行结果:

hello

####### 注意区分

read(字符)
readline(字符)
seek(字节)
truncate(字节)
tell返回的是字节

Python大文件读取方式

调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
  如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
分块读取
处理大文件是很容易想到的就是将大文件分割成若干小文件处理,处理完每个小文件后释放该部分内存。这里用了iter 和 yield:

def readInChunks(fileObj, chunkSize=4096):
    """
    Lazy function to read a file piece by piece.
    Default chunk size: 4kB.
    """
    while 1:
        data = fileObj.read(chunkSize)
        if not data:
            break
        yield data

f = open('bigFile')
for chuck in readInChunks(f):
    #do_something(chunk)
f.close()
发布了44 篇原创文章 · 获赞 57 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45144837/article/details/105455493