美文网首页
Python3 读写文件

Python3 读写文件

作者: tafanfly | 来源:发表于2020-01-29 16:18 被阅读0次

读写是Python中常见的操作, 通过读写请求操作系统打开文件对象,然后读取数据或者写入数据。

1. 读文件

  • f.read([size])方式,读取指定size的字节数,如果未给定或为负则读取所有
with open('file.txt', 'r+') as f:
    print(f.read())

#testing
2020-01-25Python 3.9.0a3 now available for testing
2020-01-17Start using 2FA and API tokens on PyPI
2020-01-07Python Software Foundation Fellow Members for Q4 2019

read() 是一次性读取文件的全部内容,即一次性把文件加载到内存, 如果文件很大, 超出内存范围,会报错MemoryError。 所以需要读取指定字节数。下面只是用了小文件举例。

DATA_SIZE=20
with open('file.txt', 'r+') as f:
    while True:
        block = f.read(DATA_SIZE)
        if block:
            print(block)
        else:
            break

#testing
2020-01-25Python 3.9
.0a3 now available f
or testing
2020-01-1
7Start using 2FA and
 API tokens on PyPI

2020-01-07Python Sof
tware Foundation Fel
low Members for Q4 2
019
  • f.readline()方式,读取整行,包括换行符
with open('file.txt', 'r+') as f:
    while True:
        line = f.readline()
        if line:
            print(line)
        else:
            break
#testing
2020-01-25Python 3.9.0a3 now available for testing

2020-01-17Start using 2FA and API tokens on PyPI

2020-01-07Python Software Foundation Fellow Members for Q4 2019
  • f.readlines()方式,读取所有行并返回list
with open('file.txt', 'r+') as f:
    print(f.readlines())
#testing
['2020-01-25Python 3.9.0a3 now available for testing\n', '2020-01-17Start using 2FA and API tokens on PyPI\n', '2020-01-07Python Software Foundation Fellow Members for Q4 2019']
  • 文件对象f当作迭代对象,系统将自动处理IO缓冲和内存管理, 这种方法是更加pythonic的方法
with open('file.txt', 'r+') as f:
    for line in f:
        print(line)
# testing
2020-01-25Python 3.9.0a3 now available for testing

2020-01-17Start using 2FA and API tokens on PyPI

2020-01-07Python Software Foundation Fellow Members for Q4 2019

总结:
f.read()f.readlines() 方法都是一次性读取文件全部内容,操作比较方便,但是对于大文件,会出现内存溢出等问题,所以需要使用f.read(size)文件对象f的方法。

2. 快速无误的读取大文件

  • 一个比较pythonic的方法,把文件对象f当作迭代对象
    实现:打开文件的过程中,不会一次性读取全部文件,而是采用每次读取一行的方式。
    优缺点:代码简洁,如果一行数据大小超过内存,也会造成MemoryError
with open('file.txt', 'r+') as f:
    for line in f:
        print(line)
  • 分割数据+yield
    实现:将文件切分成小段,每次处理完小段内容后,释放内存
    优缺点:代码略显复杂,读取大文件一般没问题
def read_big_file(filename, size=4096):
    with open(filename, 'r+') as f:
        while True:
            block = f.read(size)
            if block:
                yield block
            else:
                break

for block in read_big_file('file.txt'):
    print(block)
# testing
2020-01-25Python 3.9.0a3 now available for testing
2020-01-17Start using 2FA and API tokens on PyPI
2020-01-07Python Software Foundation Fellow Members for Q4 2019

3. 写文件

  • f.write()方式, 将字符串写入文件,返回的是写入的字符长度
with open('file.txt', 'w+') as f:
    f.write('Hello!\n')
# testing
cat file.txt 
Hello!
  • f.writelines()方式, 向文件写入一个序列字符串列表,如果需要换行则要每行加入行符
with open('file.txt', 'w+') as f:
    f.writelines(['Hello\n', 'World\n'])
# testing
cat file.txt 
Hello
World

总结:
写文件操作是比较简单的,但是一定要记住,写入文件后要关闭文件

写文件时,操作系统为提高效率,往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。

一旦程序崩溃, 可能会导致中途写入的数据丢失, 所以推荐使用with open函数。

相关文章

  • Python3:文件读写

    文件读写模式 使用open()函数 以任何方式使用文件之前,都必须打开文件;打开文件使用open()函数,其返回一...

  • Python3 读写文件

    读写是Python中常见的操作, 通过读写请求操作系统打开文件对象,然后读取数据或者写入数据。 1. 读文件 f....

  • PYTHON部分基础D4

    Decorator装饰器 装饰器自己可以有参数 内置函数 文件读写 Python3的继承机制 成员保护和访问限制 ...

  • C语言读写文件

    C语言文件读写### 标准文件读写 非标准文件读写 标准文件读写 头文件 include 打开文件 函数原型:FI...

  • python3文件读写

    读写文件的语法 文件的基本操作 r:以只读方式打开文件。文件的指针将会放在文件的开头。w:打开一个文件只用于写入,...

  • python3读写文件的方式:

    一、读取文本格式的文件:open 读取内容的方式: 写文件方式: 例: 二、读取csv格式的文件: 例:

  • 跟我一起学Python(八)

    一、IO编程 读写文件是最常见的IO操作,Python内置了读写文件的函数。文件读写的原理:在磁盘上读写文件的功能...

  • Python 学习笔记6 2018-04-13

    文件操作: 1,文件的读写操作 2,文件的各种系统操作 3,存储对象 1,文件的读写操作 读写数据: ...

  • 用Python实现磁盘IO操作全攻略,让数据流动起来!

    01 文件读写 1. 打开文件 读写文件是最常见的IO操作。Python内置了读写文件的函数,方便了文件的IO操作...

  • [快学Python3]INI文件读写

    概述 ini是我们常见到的配置文件格式之一。 ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)...

网友评论

      本文标题:Python3 读写文件

      本文链接:https://www.haomeiwen.com/subject/jovcthtx.html