当前位置: 首页 > news >正文

Python 文件 I/O 入门指南

Python 文件 I/O 入门指南

文章目录

  • Python 文件 I/O 入门指南
    • 一、文件的打开与关闭
    • 二、文件的读取
    • 三、文件的写入
    • 四、文件的定位
    • 五、文件的属性
    • 六、处理不同类型的文件
    • 七、错误处理
    • 八、总结

在 Python 编程中,文件输入输出(I/O)是一项非常重要的技能。无论是读取配置文件、处理数据文件,还是将结果写入文件,都需要用到文件 I/O 操作。本文将为你提供一份详细的 Python 文件 I/O 入门指南,帮助你轻松掌握这一关键技能。

一、文件的打开与关闭

  1. 打开文件
    • 使用open()函数可以打开一个文件。该函数接受两个参数:文件名和模式。文件名是要打开的文件的名称,可以是相对路径或绝对路径。模式指定了打开文件的方式,例如读取、写入或追加。
    • 以下是一些常见的文件打开模式:
      • 'r':以只读模式打开文件。如果文件不存在,会抛出FileNotFoundError异常。
      • 'w':以写入模式打开文件。如果文件不存在,会创建一个新文件。如果文件已存在,会清空文件内容。
      • 'a':以追加模式打开文件。如果文件不存在,会创建一个新文件。如果文件已存在,会在文件末尾追加内容。
      • 'b':以二进制模式打开文件。可以与其他模式结合使用,例如'rb'表示以二进制只读模式打开文件。
    • 例如,以下代码以只读模式打开一个名为example.txt的文件:
file = open('example.txt', 'r')
  1. 关闭文件
    • 打开文件后,一定要记得关闭文件,以释放资源。可以使用close()方法来关闭文件。
    • 例如:
file = open('example.txt', 'r')
# 对文件进行操作
file.close()
  • 为了确保文件在使用后被正确关闭,也可以使用with语句。with语句会在代码块执行完毕后自动关闭文件,即使在代码块中发生了异常。
  • 例如:
with open('example.txt', 'r') as file:# 对文件进行操作

二、文件的读取

  1. 读取整个文件
    • 可以使用read()方法读取整个文件的内容。该方法返回一个字符串,包含文件中的所有内容。
    • 例如:
with open('example.txt', 'r') as file:content = file.read()print(content)
  1. 逐行读取文件
    • 可以使用readline()方法逐行读取文件的内容。该方法每次返回一行内容,包括换行符。
    • 例如:
with open('example.txt', 'r') as file:line = file.readline()while line:print(line)line = file.readline()
  • 也可以使用readlines()方法一次性读取文件的所有行,并将它们存储在一个列表中。
  • 例如:
with open('example.txt', 'r') as file:lines = file.readlines()for line in lines:print(line)

三、文件的写入

  1. 写入字符串
    • 可以使用write()方法将字符串写入文件。如果文件以写入模式或追加模式打开,新的内容将被添加到文件中。
    • 例如:
with open('example.txt', 'w') as file:file.write('Hello, world!')
  1. 写入多行内容
    • 可以使用writelines()方法将一个字符串列表写入文件。每个字符串代表一行内容,不会自动添加换行符。
    • 例如:
lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
with open('example.txt', 'w') as file:file.writelines(lines)

四、文件的定位

  1. 获取当前位置
    • 可以使用tell()方法获取文件指针的当前位置。文件指针指示了下一次读取或写入操作将发生的位置。
    • 例如:
with open('example.txt', 'r') as file:position = file.tell()print(position)
  1. 移动文件指针
    • 可以使用seek()方法移动文件指针到指定的位置。该方法接受两个参数:偏移量和起始位置。起始位置可以是0(文件开头)、1(当前位置)或2(文件末尾)。
    • 例如:
with open('example.txt', 'r') as file:file.seek(10, 0)  # 移动到文件开头后 10 个字节的位置content = file.read()print(content)

五、文件的属性

  1. 文件名
    • 可以使用name属性获取文件的名称。
    • 例如:
with open('example.txt', 'r') as file:print(file.name)
  1. 文件模式
    • 可以使用mode属性获取文件的打开模式。
    • 例如:
with open('example.txt', 'r') as file:print(file.mode)
  1. 文件是否已关闭
    • 可以使用closed属性判断文件是否已关闭。如果文件已关闭,该属性返回True;否则,返回False
    • 例如:
with open('example.txt', 'r') as file:print(file.closed)
file.close()
print(file.closed)

六、处理不同类型的文件

  1. 文本文件
    • 文本文件是最常见的文件类型,通常包含人类可读的文本内容。在 Python 中,可以使用默认的文本模式('r''w''a')来处理文本文件。
    • 例如,读取一个文本文件并打印其中的内容:
with open('example.txt', 'r') as file:content = file.read()print(content)
  • 写入一个文本文件:
with open('example.txt', 'w') as file:file.write('Hello, world!')
  1. 二进制文件
    • 二进制文件包含二进制数据,如图像、音频、视频文件等。在 Python 中,可以使用二进制模式('rb''wb''ab')来处理二进制文件。
    • 例如,读取一个二进制文件并打印其中的内容:
with open('example.jpg', 'rb') as file:content = file.read()print(content)
  • 写入一个二进制文件:
with open('example.jpg', 'wb') as file:file.write(binary_data)

七、错误处理

  1. 文件不存在
    • 如果尝试打开一个不存在的文件,会抛出FileNotFoundError异常。可以使用try-except语句来捕获这个异常并进行相应的处理。
    • 例如:
try:with open('nonexistent.txt', 'r') as file:content = file.read()print(content)
except FileNotFoundError:print('File not found.')
  1. 权限错误
    • 如果尝试以不适当的权限打开文件,会抛出PermissionError异常。同样,可以使用try-except语句来捕获这个异常并进行相应的处理。
    • 例如:
try:with open('protected.txt', 'r') as file:content = file.read()print(content)
except PermissionError:print('Permission denied.')

八、总结

Python 的文件 I/O 操作提供了丰富的功能,可以方便地处理各种类型的文件。在使用文件 I/O 时,要注意正确地打开和关闭文件,选择合适的文件模式,以及处理可能出现的错误。通过掌握这些基本技能,你可以在 Python 编程中更加高效地处理文件数据。

http://www.lryc.cn/news/464593.html

相关文章:

  • Atlas800昇腾服务器(型号:3000)—YOLO全系列NPU推理【检测】(五)
  • 1.2.3 TCP IP模型
  • 选择、冒泡和插入排序及其优化版本课件
  • Matlab自学笔记三十九:日期时间型数据的算术运算:加减运算
  • Java-多线程2
  • POWER_CONMETRICS的packet wakeup events触发条件的代码走读
  • Bug:通过反射修改@Autowired注入Bean的字段,明确存在,报错 NoSuchFieldException
  • Vue项目兼容IE11
  • 可以帮助你快速禁用windows自带的防火墙程序defender control,有效解决占用内存大的问题,供大家学习研究参考
  • 2024年9月电子学会Scratch图形化编程等级考试二级真题试卷
  • STL-vector+题目
  • 微服务--Gateway网关--全局Token过滤器【重要】
  • 负载均衡在线判题系统【项目】
  • 重构复杂简单变量之用子类替换类型码
  • 【Nginx系列】Nginx配置超时时间
  • 2024年龙信
  • PyCharm配置Flask开发环境
  • 【人工智能-初级】第2章 机器学习入门:从线性回归开始
  • SPOOLing技术详解,结合实际场景让你了解什么是假脱机技术。
  • 基于SSM汽车零部件加工系统的设计
  • 改进 JavaScript 条件语句,探索可以替代 if...else 的 7 种方式!
  • 全新子比主题7.9.2开心版 子比主题最新版源码
  • Kafka之消费者组与消费者
  • Damn-Vulnerable-Drone:一款针对无人机安全研究与分析的靶机工具
  • 项目模块三:Socket模块
  • Unity-Shader-语义
  • MFC工控项目实例二十四模拟量校正值输入
  • analysis-ik分词器
  • 开源的、基于内存的键值存储数据库redis详细介绍
  • 三种容器 std::vector、std::map、std::unordered_set 的对比分析