要说 Python 里最基础也最常用的操作,打开 TXT 文件绝对能排在前几位。想想看,多少数据、配置,都躺在这些看似不起眼的文本文件里等着我们去挖掘。但别看它简单,打开的方式可不止一种,选对了能事半功倍。

最最基础的,当然是用 open() 函数了。这就像是打开一扇门,把文件资源引入 Python 的世界。

python
file = open("my_file.txt", "r") # 以只读模式打开
content = file.read()
file.close()
print(content)

上面这段代码,我敢说,任何一个学 Python 的人都写过。它简单粗暴,但是也存在一些问题,比如忘记 file.close() 就可能会导致资源泄露,尤其是处理大文件时。

所以,更好的方式是用 with open() 语句。这就像是给打开的文件加了一把锁,用完自动释放,再也不用担心忘记关闭了。

python
with open("my_file.txt", "r") as file:
content = file.read()
print(content)

是不是感觉清爽多了?而且更安全!

open() 函数的第二个参数,"r" 代表只读模式。还有 "w" (写入模式,会覆盖原有内容)、"a" (追加模式,在文件末尾添加内容)、"rb" (二进制读取)、 "wb" (二进制写入) 等等,根据你的需求选择合适的模式。

但是,如果 TXT 文件里有中文,事情就没那么简单了。一不小心就会遇到编码问题,看着满屏的乱码,简直让人崩溃。

这时候,就需要指定编码方式了。常见的编码方式有 "utf-8""gbk" 等等。

python
with open("my_chinese_file.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)

如果你的文件是用 "gbk" 编码的,就把 "utf-8" 换成 "gbk"。一般来说,"utf-8" 是个比较通用的选择。但总有些“个性”的文件,需要你一个个尝试。我见过最奇葩的是用 "latin-1" 编码的,简直让人哭笑不得。

除了 read() 方法,还有其他读取文件内容的方式。

readline() 方法可以逐行读取文件内容。

python
with open("my_file.txt", "r") as file:
line = file.readline()
while line:
print(line.strip()) # 去掉行尾的换行符
line = file.readline()

readlines() 方法则一次性读取所有行,返回一个列表。

python
with open("my_file.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line.strip())

这两种方法各有优劣。readline() 适合处理超大文件,避免一次性加载到内存导致崩溃;readlines() 则更简洁,方便对所有行进行统一处理。

那么,如果只想读取文件的一部分内容呢?

read(size) 方法可以指定读取的字符数。

python
with open("my_file.txt", "r") as file:
content = file.read(100) # 读取前100个字符
print(content)

这个方法在处理大型文本文件时非常有用,可以避免一次性读取整个文件导致内存溢出。

除了读取,写入 TXT 文件也很常见。

python
with open("my_new_file.txt", "w") as file:
file.write("Hello, world!\n")
file.write("This is a new line.")

注意, "w" 模式会覆盖原有内容。如果想在文件末尾添加内容,需要使用 "a" 模式。

python
with open("my_existing_file.txt", "a") as file:
file.write("Adding some more content.\n")

在写入中文时,同样需要指定编码方式。

python
with open("my_chinese_file.txt", "w", encoding="utf-8") as file:
file.write("你好,世界!\n")

如果你的程序需要处理用户输入的文件路径,一定要注意路径的安全性。避免用户输入恶意路径,导致程序访问到不该访问的文件。可以使用 os.path.abspath() 方法将用户输入的相对路径转换为绝对路径,并进行校验。

在实际开发中,处理 TXT 文件可能会遇到各种各样的问题。比如,文件不存在、权限不足、编码错误等等。

所以,最好用 try...except 语句来捕获这些异常,保证程序的健壮性。

python
try:
with open("non_existent_file.txt", "r") as file:
content = file.read()
print(content)
except FileNotFoundError:
print("文件不存在!")
except PermissionError:
print("权限不足!")
except UnicodeDecodeError:
print("编码错误!")
except Exception as e:
print(f"发生未知错误:{e}")

这样,即使程序遇到问题,也不会直接崩溃,而是会给出友好的提示信息。

总而言之,Python 打开 TXT 文件看似简单,实则有很多细节需要注意。选择合适的打开方式、处理编码问题、注意文件路径安全、捕获异常,才能让你的程序更加稳定可靠。希望这篇文章能帮你在 Python 的世界里更好地驾驭 TXT 文件。记住,多实践、多踩坑,才能真正掌握这些技巧。

最后,我想说,TXT 文件虽然古老,但依然是数据存储和交换的重要方式。熟练掌握 Python 处理 TXT 文件的技巧,绝对能让你在工作中游刃有余。

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