要说 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 文件的技巧,绝对能让你在工作中游刃有余。