Python怎么读取txt?一篇详细教程,教你轻松掌握文本文件读取技巧,附带实用示例!

要说 Python怎么读取txt 文件,这可真是基础中的基础了。但别以为基础就简单,里面门道可不少,尤其是在面对各种奇奇怪怪的编码、超大的文件的时候。今天,咱们就来好好聊聊 Python读取txt 文件的那些事儿。

我第一次接触 Python读取txt 文件,还是帮我爸整理他那些乱七八糟的股票数据。那时候,满眼都是数字和表格,头都大了。不过,也是那时候,我才真正体会到 Python 的强大,几行代码就能搞定,简直是效率神器。

最简单的,当然是用 open() 函数。这就像打开一扇门,通往 txt 文件的世界:

“`python
file = open(“myfile.txt”, “r”) # 以只读模式打开文件
content = file.read() # 读取整个文件内容
file.close() # 记得关闭文件,释放资源

print(content)
“`

这段代码,简洁明了,对吧?但是,问题也来了。如果文件太大,比如几百兆甚至几个G,一下子全部读到内存里,电脑分分钟卡死给你看。所以,更好的办法是逐行读取:

python
file = open("myfile.txt", "r")
for line in file:
print(line.strip()) # 处理每一行数据,strip() 去掉行尾的换行符
file.close()

这样,一次只读取一行,内存压力小多了。就像吃自助餐,细嚼慢咽,慢慢来。

但是!人生处处有惊喜(或者说是惊吓)。你有没有遇到过这样的情况:txt 文件里的中文显示乱码? 这就是编码的问题了。 Python 默认的编码方式可能和 txt 文件的编码方式不一致,导致无法正确解码。

解决方法也很简单,在 open() 函数里指定编码方式:

python
file = open("myfile.txt", "r", encoding="utf-8") # 指定编码为utf-8
for line in file:
print(line.strip())
file.close()

常见的编码方式有 utf-8gbkgb2312 等。如果不知道 txt 文件的编码方式,可以尝试用不同的编码方式打开,看看哪个能正常显示中文。

说到这里,不得不提一下 with 语句。这玩意儿,简直是优雅的化身:

python
with open("myfile.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())

用了 with 语句,就不用手动 close() 文件了。当 with 语句块执行完毕后,Python 会自动关闭文件,省心省力。

除了 read() 和逐行读取,Python 还提供了 readlines() 方法,可以一次性把所有行读取到一个列表中:

“`python
file = open(“myfile.txt”, “r”, encoding=”utf-8″)
lines = file.readlines() # 读取所有行到列表中
file.close()

for line in lines:
print(line.strip())
“`

这种方法,适合处理小型 txt 文件。如果文件太大,还是建议逐行读取。

除了简单的读取,有时候我们还需要对 txt 文件进行一些处理,比如过滤掉空行、注释行:

python
with open("myfile.txt", "r", encoding="utf-8") as file:
for line in file:
line = line.strip() # 去掉行首尾的空格
if not line: # 如果是空行,跳过
continue
if line.startswith("#"): # 如果是注释行,跳过
continue
print(line) # 处理有效数据

这段代码,就过滤掉了空行和以 # 开头的注释行。

还有一种情况,就是 txt 文件是用逗号、空格或其他分隔符分隔的数据。这时候,可以用 split() 方法来分割每一行的数据:

python
with open("data.txt", "r", encoding="utf-8") as file:
for line in file:
data = line.strip().split(",") # 用逗号分割每一行的数据
print(data) # 处理分割后的数据

这段代码,用逗号分割每一行的数据,并把分割后的数据打印出来。

当然,如果你的 txt 文件是标准的 CSV 格式,也可以用 csv 模块来读取:

“`python
import csv

with open(“data.csv”, “r”, encoding=”utf-8″) as file:
reader = csv.reader(file)
for row in reader:
print(row)
“`

csv 模块,专门用来处理 CSV 格式的文件,功能强大,使用方便。

我记得有一次,需要处理一个超大的日志文件,几百G的那种。用普通的 Python读取txt 方法,根本跑不动。后来,我找到了一个好东西:mmap 模块。

mmap 模块,可以将文件映射到内存中,像操作内存一样操作文件。这样,就可以处理超大的文件了。

“`python
import mmap

with open(“large_file.txt”, “r”, encoding=”utf-8″) as file:
with mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as mm:
for line in iter(mm.readline, b””):
line = line.decode(“utf-8”).strip()
print(line)
“`

这段代码,用 mmap 模块将文件映射到内存中,然后逐行读取。速度飞快,简直是处理大型文件的利器。

总结一下,Python读取txt 文件的方法有很多种,选择哪种方法,取决于你的具体需求。 如果是小型文件,可以用 read()readlines() 或者逐行读取。 如果是大型文件,可以用 mmap 模块。 如果文件是 CSV 格式,可以用 csv 模块。 别忘了处理编码问题,以及过滤掉不需要的行。 掌握了这些技巧,Python读取txt 文件,就再也不是什么难题了。 你说对吧?

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。