Python技术迷

利用Python读取txt文件数据

嗨,大家好,我是虎哥。
今天咱们聊聊在Python编程中一个再基础不过的话题——读取txt文件。
对于很多刚入门的小伙伴来说,文件操作是避不开的一个环节,尤其是非开发者在日常数据处理时,经常需要对各种文本文件进行读取和存储。那今天咱们就一起看看如何用Python实现这些文件读取的基本操作吧。
说到读取文件,Python 提供了几种不同的方式,不管你是想一口气把所有内容读进来,还是逐行处理,亦或是直接将每一行放到列表里,它都能帮你轻松搞定。下面我就从几种常用的文件读取方式聊起,并穿插一些小技巧,大家看完就能明白各自的优缺点。

一次性读取文件内容

通常在处理较小文件时,我们会选择一次性读取整个文件的内容。假设我们有一个文本文件cats.txt,其中包含了若干行文本数据。这时,我们可以使用open()和read()方法将整个文件的内容一次性读入:
with open('cats.txt', 'r') as file:  content = file.read()  print(content)
解释一下:
  • open('cats.txt', 'r'):第一个参数是文件名,第二个参数是文件模式('r'表示只读模式)。
  • with:这个关键字的作用是确保文件在读取完后自动关闭。就像你出门前总要记得锁门一样,用了with就不用再手动调用file.close()了,方便又安全。
不过,直接用read()一次性把整个文件内容读入,如果文件很大就可能会撑爆内存。所以这种方式只适用于处理小文件——假如你要处理一个几百MB的日志文件,嗯……那你就自求多福吧。

逐行读取文件内容

既然一次性读太大的文件可能会卡爆内存,那我们可以考虑逐行读取。通过for循环,我们可以逐行处理文件中的数据,更加节省内存:
with open('cats.txt', 'r') as file:  for line in file:      print(line.rstrip()) # rstrip()去除右侧多余的换行符

注意:在文本文件中,每行通常都以换行符(\n)结束,而 print() 自带一个默认的换行,所以在输出时会多出一行空白。为了解决这个问题,我们可以使用 rstrip() 方法去掉每行末尾多余的换行符,从而防止多余的空行。这样一来,每行就能干干净净地出现在屏幕上了。

3. 将文件内容保存到列表中

如果我们希望读取文件后进行多次操作,那直接把每一行存入列表中是个不错的选择。这种方式对于需要频繁访问和处理文本内容的场景很有用。比如,我们有时候可能要对数据做分析,统计某些关键词的出现次数等,这时候把文本存成一个列表就会方便很多。
with open('cats.txt', 'r') as file:  lines = file.readlines()for line in lines:  print(line.rstrip())
这里使用了 readlines() 方法,它会将文件的每一行都读入并保存到列表 lines 中。随后我们可以用 for 循环遍历这个列表进行处理。注意:虽然 readlines() 更加直观,但如果文件太大,同样存在内存占用的问题。所以在使用前,最好心里有点数,别等程序挂掉才想起来用“分而治之”的策略。

4. 防止路径问题带来的错误

很多初学者在读文件时经常会遇到文件找不到的情况——明明文件就在同一目录下,为啥还报错?别急,这其实是相对路径和绝对路径的问题。在程序中,如果你没指定文件的绝对路径,而文件又不在当前执行目录下,就会遇到这种问题。为此,你可以使用绝对路径或者将文件和程序放在同一目录下:
import osfile_path = os.path.join(os.getcwd(), 'cats.txt') # 获取文件的绝对路径with open(file_path, 'r') as file:  content = file.read()  print(content)
这种方式就能有效避免相对路径的问题了。os.getcwd() 获取当前工作目录,而 os.path.join() 可以根据当前路径构造出文件的绝对路径。这样写程序,文件放在哪都不怕找不到了。

5. 其他注意事项

说到文件读取,我们还有几点细节要注意:
编码问题:默认情况下,open() 使用的是 UTF-8 编码。如果你的文件不是这种编码(比如是 GBK),那么读取时可能会出现乱码或者报错。为此,可以显式地指定编码:
with open('cats.txt', 'r', encoding='GBK') as file:  content = file.read()  print(content)
异常处理:在读取文件时,如果文件不存在,程序会直接报错退出。为了解决这种情况,我们可以加入异常处理,让程序更加健壮:
try:  with open('cats.txt', 'r') as file:      content = file.read()      print(content)except FileNotFoundError:  print("文件不存在,请检查文件路径!")
这样一来,当文件路径错误时,我们就能看到一条友好的提示信息,而不是一大串的报错堆栈。 说了这么多,其实无论你是选择一次性读取,逐行处理,还是存入列表,关键还是要看你的文件大小和处理需求。像刚开始练手的小项目,一次性读取无伤大雅,但如果是实际项目中的大数据量文件,就需要精打细算了。
最后再唠叨一句,文件操作三大法宝:open(), with, close()。善用 with,你就不用担心文件没关闭造成的资源泄露问题了。
好了,关于Python读取txt文件的几种方式就聊到这儿了,希望对大家有所帮助。等掌握了这些技巧之后,再遇到txt文件时,你就可以用“优雅”的姿势从容应对了。祝大家写代码不迷路,文件操作都搞定!
目前,对编程、职场感兴趣的同学,大家可以联系我微信: golang404 ,拉你进入“程序员交流群”。
🔥 虎哥私藏精品 热门推荐 🔥 虎哥作为一名老码农,整理了全网最全 《python高级架构师资料合集》 。
资料包含了 《IDEA视频教程》 、 《最全python面试题库》 、 《最全项目实战源码及视频》 及 《毕业设计系统源码》 ,总量高达 650GB 。 全部 免费领取 !全面满足各个阶段程序员的学习需求 。