
文件就像一扇门,要读取或写入数据,你得先打开它。Python里,open() 函数就是负责开门的。开了门,用完了记得关上,不然可能会出问题,这就是close() 函数。
file = open("my_file.txt", "r") # 以只读模式打开一个名为my_file.txt的文件# 这里可以进行文件的读取操作file.close() # 关闭文件
这里的 "r" 就是模式,表示只读。还有 "w"(只写,会覆盖原有内容), "a"(追加,在文件末尾添加内容)等等。要注意的是,如果文件不存在,使用 "w" 模式会创建一个新文件,而 "r" 模式会报错。
温馨提示: 忘记关门是很常见的错误。为了避免这种情况,可以使用 with 语句,它可以自动管理文件的打开和关闭.
withopen("my_file.txt", "r") as file:# 这里进行文件读取操作 content = file.read()# 文件在这里被自动关闭
with 语句块结束的时候,文件就自动关闭了,省心!
打开了文件,下一步就是读取里面的内容。Python 提供了几种读取方式:
read()readline()readlines()withopen("my_file.txt", "r") as file: content = file.read() # 读取整个文件print(content)withopen("my_file.txt", "r") as file: line = file.readline() # 读取一行print(line)withopen("my_file.txt", "r") as file: lines = file.readlines() # 读取所有行for line in lines:print(line.strip()) # strip() 用于移除字符串头尾指定的字符(默认为空格或换行符)
选用哪种方式,取决于你的需求和文件的大小。一般来说,如果文件不大,read() 最方便。如果文件很大,或者需要逐行处理,readline() 或 readlines() 更合适。
写入内容也很简单,使用 write() 函数。
withopen("my_file.txt", "w") as file: file.write("Hello, world!\n") file.write("This is a new line.")
注意,"w" 模式会覆盖原有内容。如果你想在文件末尾添加内容,就用 "a" 模式。
withopen("my_file.txt", "a") as file: file.write("\nAdding more content...")
写入的时候,换行符 \n 很重要,不然所有内容会挤在一行。
文件模式决定了你对文件能做什么,以及怎么做。一些常用的模式:
"r""w""a""r+""w+""a+"还有一些二进制模式,用来处理非文本文件,比如图片、音频这些。在模式后面加上 "b" 就行了,比如 "rb"、 "wb" 。
# 以二进制只读模式打开图片withopen("image.jpg", "rb") as file: image_data = file.read()
温馨提示: 文本模式和二进制模式的处理方式略有不同。文本模式会自动处理换行符,而二进制模式则不会。
文件指针就像一个光标,指示当前读取或写入的位置。
seek(offset, whence)offset 是偏移量,whence 是起始位置(0:文件开头,1:当前位置,2:文件末尾)。tell()withopen("my_file.txt", "r") as file:print(file.tell()) # 输出:0 file.read(5) # 读取 5 个字符print(file.tell()) # 输出:5 file.seek(0) # 回到文件开头print(file.tell()) # 输出:0
seek() 和 tell() 在处理大文件,或者需要随机访问文件内容时很有用。
文件操作可能会出错,比如文件不存在,权限不够等等。为了让程序更健壮,要使用异常处理。
try:withopen("non_existent_file.txt", "r") as file: content = file.read()print(content)except FileNotFoundError:print("文件未找到!")except Exception as e:print(f"发生错误:{e}")
try...except 语句可以捕获异常,并进行相应的处理。这样,即使出现错误,程序也不会崩溃,而是会给出友好的提示。
文件操作的应用场景非常广泛。
# 写入配置信息config = {"name": "My App", "version": "1.0"}withopen("config.txt", "w") as file:for key, value in config.items(): file.write(f"{key}={value}\n")# 读取配置信息config = {}try:withopen("config.txt", "r") as file:for line in file: key, value = line.strip().split("=") config[key] = valueexcept FileNotFoundError:print("配置文件未找到!")print(config)
文件操作是编程的基础,也是必备技能。勤加练习,灵活运用,相信你很快就能掌握它,让你的程序更加强大!

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等
▲扫描二维码-免费领取
推荐阅读
Lihil框架—其愿景是:使 Python 成为 Web 开发的主流编程语言
excel-serializer: Excel 世界的 json.dump()/ load(),轻松序列化Python 复杂数据
点击 阅读原文了解更多