首页 > 自考资讯 > 自考知识

一篇文章带你搞懂python的文件读写技巧,一篇文章带你搞懂python的文件读写方法

头条共创 2024-06-27

来源:Python爬虫与数据挖掘

作者:Python高级

一、什么是文件?

文件用于节省一些存储空间,下次运行程序时可以直接使用,无需创建新副本,节省您的时间和精力。

二、文件如何的打开?

Python 有一个内置的open() 方法,允许您读取和写入文件。

使用open()方法操作文件就像把大象塞进冰箱:一是打开文件,二是操作文件,三是关闭文件,可以分为几个步骤。

开放语法

open()方法的返回值是一个文件对象,可以将其赋值给一个变量(文件句柄)。

基本语法形式是:

f=open(文件名, 模式) 注意:

在Python中,任何具有读写方法的对象都可以归类为文件类型。所有文件类型对象都可以使用open 方法打开并使用close 方法关闭。

文件名:包含要访问的文件名的字符串值(通常是文件路径)。

模式:打开文件的模式有多种。默认为只读模式。

例子:

# 打开文件f=open('1.txt', 'w')f.write('Python is a beautiful language.\nPython!\n') # 关闭打开的文件f .close() 操作的结果:

Python 是一种非常适合在1.txt 文件中编写的语言。 Python。

d88fe17277f2420f860347f52137b459~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720101832&x-signature=OyefHIJexXiVmmo%2FA4lcTQwP%2Fck%3D

三、访问模式

通过表格学习Python中常用的读写模式。

访问方式

解释

r

以只读方式打开文件。文件指针位于文件的开头。 (默认模式)。

w

打开一个只写文件。如果该文件已经存在,它将被覆盖。如果该文件不存在,则创建一个新文件。

打开您要添加的文件。如果文件已经存在,则将文件指针放置在文件末尾。换句话说,新内容是在现有内容之后写入的。如果该文件不存在,则创建一个新文件进行写入。

R.B.

以二进制格式以只读方式打开文件。文件指针位于文件的开头。这是默认模式。

工作组

以只写二进制格式打开文件。如果该文件已经存在,它将被覆盖。如果该文件不存在,则创建一个新文件。

腹肌

以二进制格式打开文件进行添加。如果文件已经存在,则将文件指针放置在文件末尾。也就是说,新内容是在现有内容之后写入的。如果该文件不存在,则创建一个新文件进行写入。

r+

打开文件进行读取和写入。文件指针位于文件的开头。

瓦+

打开文件进行读取和写入。如果该文件已经存在,它将被覆盖。如果该文件不存在,则创建一个新文件。

+

打开文件进行读取和写入。如果文件已经存在,则文件指针放置在文件末尾。该文件将以追加模式打开。如果该文件不存在,将创建一个新文件用于读写。

RB+

打开二进制格式的文件进行读取和写入。文件指针位于文件的开头。

WB+

打开二进制格式的文件进行读取和写入。如果该文件已经存在,它将被覆盖。如果该文件不存在,则创建一个新文件。

腹部+

以二进制格式打开文件进行添加。如果文件已经存在,则文件指针放置在文件末尾。如果该文件不存在,将创建一个新文件用于读写。

如果要读取非UTF-8编码的文件,需要向open()函数传递一个编码参数。

例如读取GBK编码的文件:

f=open('gbk.txt', 'r',encoding='gbk') f.read()'GBK' #如果编码时发现非标准编码的文件,则抛出UnicodeDecodeError 异常。这意味着:该文件可能包含非法编码的字符。在这种情况下,您可以指定errors参数来指定如何处理编码错误。

f=open('gbk.txt', 'r',coding='gbk',errors='ignore')

三、 文件对象操作

使用open 方法打开文件会返回一个文件对象。该对象有许多内置的操作方法。

下面将打开f文件对象(1.txt)。对文件对象进行相关操作。

1. f.read(大小)

读取特定大小的数据并将其作为字符串或字节对象返回。 size 是一个可选的数字参数,用于指定要读取的数据量。如果size 被省略或为负数,则读取并返回文件的全部内容。

f=open('1.txt', 'r')str=f.read()print(str)f.close() 如果文件较大,请勿使用read() 方法读取文件。请。内存是一次性读取的,但是像read(312)一样是一点点读取的。

2. f.readline()

从文件中读取一行n 内容。换行符是“\n”。如果返回空字符串,则已读取最后一行。当您想要读取一行并处理一行时,通常使用此方法。

f=open('1.txt', 'r')str=f.readline()print(str)f.close()3.

将文件中的所有行一一读取到一个列表中,将它们一一用作列表的元素,并返回此列表。 readlines方法将所有文件一次性读入内存,因此它有一些缺点。但优点是每一行都保存在一个列表中,可以随意访问。

f=open('1.txt', 'r')a=f.readlines()print(a)f.close()4. 扫描文件。

在实践中,我们使用文件对象作为迭代器。

# 打开文件f=open('1.txt', 'r') for line in f: print(line, end='') # 关闭打开的文件f.close() 这个方法非常简单。你必须复制文件才能一次性读取,但像readline 方法一样,你只能前进,不能后退。

几种不同的读取和遍历文件方式的比较:

如果文件很小,read() 是一次读取所有内容的最方便的方法。

如果无法确定文件大小,重复调用read(size) 会更安全。

对于配置文件,调用readlines()是最方便的。一般来说,使用for 循环更好更快。

5. f.write()

使用write()完成向文件写入数据。

# 打开文件f=open('/tmp/foo.txt', 'w')f.write('Python 是一门伟大的语言。\n我喜欢Python!\n')# 打开文件关闭f.关闭()6.f.tell()

返回文件读/写指针的当前位置,即距离文件开头的字节数。请注意,它是字节数,而不是字符数。

7. f.seek()

如果想改变位置指针的位置,可以使用f.seek(offset, from_what)方法。 Seek() 通常与Tell() 方法结合使用。

from_what的值为0表示从文件开头开始计算,1表示从文件读写指针当前位置开始计算,2表示从文件末尾开始计算。默认值为0。例子:

offset:表示偏移量。

Seek(x,0):从起始位置(文件第一行的第一个字符)移动x个字符。 eek(x,1):表示从当前位置开始返回x个字符。 eek(-x,2):表示从文件末尾向前移动x个字符。例子:

f=open('1.txt', 'rb+')f.write(b'1232312adsfalafds')print(f.tell())print(f.seek(5))print(f.read(1))print (f.seek(-3, 2))print(f.read(1)) 的结果:

f4a430f0b03c41c1a9ecc8e52ab888aa~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720101832&x-signature=%2FeficgnMTwcNcs6SA9S9AXeN30Y%3D8.f.close()

关闭文件对象。处理完文件后,调用f.close()关闭文件并释放系统资源。如果在关闭文件后尝试再次调用该文件对象,将会抛出异常。如果忘记调用close(),则只有部分数据会写入磁盘,其余数据可能会丢失或更糟。

五、 with关键字

with 关键字用于Python 的上下文管理器机制。这是为了防止文件泄漏或损坏的可能性,例如由于open 等文件打开方法导致操作过程中发生异常或错误,或者由于最后忘记执行close 方法而导致文件异常终止。

Python 提供了上下文管理器机制来确保文件正常关闭。无需编写关闭语句。注意缩进。

with open('test.txt', 'w') as f: f.write('Hello, world!')with 支持同时打开多个文件(文件是随机创建的)。

with open('1') as obj1, open('2','w') as obj2: s=obj1.read() obj2.write(s)

六、总结

本文基于Python 语言基础知识。介绍文件操作的相关知识点。它从基本的文件概念开始,通过小型项目演示,详细介绍了常用的读写模式、如何操作文件对象以及在实际应用程序中需要注意的问题。希望它能帮助你更好地学习Python。

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢