Python文件操作与I/O处理

news/2025/3/19 18:16:45/文章来源:https://www.cnblogs.com/yoyoliwu/p/18781515

在Python中,文件操作和I/O(输入/输出)处理是编程中非常重要的部分,广泛应用于数据读取、写入、处理等场景。以下是对Python文件操作与I/O处理的详细介绍:

一、文件操作基础

(一)打开文件

  1. 使用open()函数

    • 语法:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    • file:文件路径,可以是相对路径或绝对路径。
    • mode:指定文件的打开模式,常见的模式有:
      • 'r':只读模式(默认模式),文件必须存在,否则会报错。
      • 'w':写入模式,如果文件存在则覆盖,不存在则创建。
      • 'x':独占创建模式,如果文件存在则会报错。
      • 'a':追加模式,如果文件存在则在文件末尾追加内容,不存在则创建。
      • 't':文本模式(默认模式),以文本形式处理文件。
      • 'b':二进制模式,以二进制形式处理文件。
      • '+':更新模式,可以同时进行读写操作。
    • 示例:
      f = open('example.txt', 'r')  # 打开文件用于只读
      
  2. 上下文管理器with

    • 使用with语句可以自动管理文件的打开和关闭,避免忘记关闭文件导致的资源泄漏。
    • 示例:
      with open('example.txt', 'r') as f:content = f.read()
      # 文件在离开with块后自动关闭
      

(二)读取文件

  1. read()方法
    • 读取整个文件内容为一个字符串。
    • 示例:
      with open('example.txt', 'r') as f:content = f.read()
      print(content)
      
  2. readline()方法
    • 逐行读取文件,每次读取一行,返回一个字符串。
    • 示例:
      with open('example.txt', 'r') as f:while True:line = f.readline()if not line:breakprint(line, end='')  # 打印时去掉额外的换行符
      
  3. readlines()方法
    • 读取整个文件内容为一个列表,每一行是一个列表元素。
    • 示例:
      with open('example.txt', 'r') as f:lines = f.readlines()
      for line in lines:print(line, end='')
      

(三)写入文件

  1. write()方法
    • 写入字符串内容到文件。
    • 示例:
      with open('output.txt', 'w') as f:f.write('Hello, ')f.write('World!')
      
  2. writelines()方法
    • 写入一个字符串列表到文件,不会自动添加换行符。
    • 示例:
      lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']
      with open('output.txt', 'w') as f:f.writelines(lines)
      

二、文件位置与文件对象属性

  1. 文件指针位置
    • 使用tell()方法获取当前文件指针的位置。
    • 使用seek(offset, whence)方法移动文件指针。
      • offset:偏移量。
      • whence:可选值为0(文件开头,默认值)、1(当前位置)、2(文件末尾)。
    • 示例:
      with open('example.txt', 'r') as f:print(f.tell())  # 输出0f.seek(5)  # 移动到第6个字符位置print(f.read(1))  # 读取一个字符print(f.tell())  # 输出当前指针位置
      
  2. 文件对象属性
    • name:文件名。
    • mode:文件打开模式。
    • closed:文件是否关闭。
    • 示例:
      f = open('example.txt', 'r')
      print(f.name)  # 输出文件名
      print(f.mode)  # 输出文件模式
      print(f.closed)  # 输出False
      f.close()
      print(f.closed)  # 输出True
      

三、文件和目录操作

  1. 文件操作
    • 使用os模块进行文件操作。
    • 示例:
      import os
      os.remove('example.txt')  # 删除文件
      os.rename('old_name.txt', 'new_name.txt')  # 重命名文件
      
  2. 目录操作
    • 创建目录:os.mkdir('new_folder')
    • 删除目录:os.rmdir('new_folder')
    • 列出目录内容:os.listdir('.')
    • 获取当前工作目录:os.getcwd()
    • 改变工作目录:os.chdir('new_folder')
    • 示例:
      import os
      os.mkdir('test_folder')  # 创建一个新目录
      os.chdir('test_folder')  # 切换到新目录
      print(os.getcwd())  # 输出当前工作目录
      os.listdir('.')  # 列出当前目录内容
      os.rmdir('test_folder')  # 删除目录
      

四、二进制文件操作

  1. 读取二进制文件
    • 使用'rb'模式打开文件。
    • 示例:
      with open('image.png', 'rb') as f:binary_data = f.read()
      
  2. 写入二进制文件
    • 使用'wb'模式打开文件。
    • 示例:
      with open('output.png', 'wb') as f:f.write(binary_data)
      

五、文件I/O的高级用法

  1. 缓冲区控制
    • open()函数中可以通过buffering参数控制缓冲区大小。
    • 示例:
      with open('example.txt', 'r', buffering=1024) as f:  # 设置缓冲区大小为1024字节content = f.read()
      
  2. 文件对象的迭代
    • 文件对象本身是一个可迭代对象,可以直接在for循环中使用。
    • 示例:
      with open('example.txt', 'r') as f:for line in f:print(line, end='')
      

六、文件操作的注意事项

  1. 文件编码
    • 在读写文本文件时,需要指定正确的编码格式,否则可能会出现乱码。
    • 常用的编码格式有utf-8gbk等。
    • 示例:
      with open('example.txt', 'r', encoding='utf-8') as f:content = f.read()
      
  2. 文件权限
    • 如果文件权限不足,可能会导致文件无法打开或写入。
    • 可以通过os.chmod()方法修改文件权限。
    • 示例:
      import os
      os.chmod('example.txt', 0o777)  # 修改文件权限为可读写执行
      
  3. 文件不存在或已损坏
    • 在打开文件时,如果文件不存在或已损坏,可能会抛出异常。
    • 可以通过try-except语句捕获异常并处理。
    • 示例:
      try:with open('nonexistent.txt', 'r') as f:content = f.read()
      except FileNotFoundError:print('文件不存在')
      except Exception as e:print(f'发生错误:{e}')
      

通过以上内容,你可以掌握Python文件操作与I/O处理的基本方法和高级技巧,从而更好地在实际开发中处理文件相关的任务。
文章来源于zlibrary图书馆中《Python编程从入门到实践》书的Python文件操作与I/O处理章节内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901629.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贸易企业数字化转型案例:基于日事清的目标管理、任务协作与流程可视化绩效优化实践

这家贸易公司如何提升内部协同效率?一、基本情况 所属行业:传统贸易行业 业务类型:国内贸易、货物及技术进出口 行业地位:拥有自己的研发人员,具备一站式解决方案能力。 合作概要:为解决组织提效,目标体系、协同体系、绩效体系的管理问题,客户与日事清达成合作,并将日…

使用nvm管理node.js版本

1.情景展示如上图所示,项目某个模块支持的node.js最高版本是17,我用的是20,所以只能降级。 2.具体分析 我现在把node.js降到16,那后续如果再需要20呢?能不能实现版本的随时切换? 3.安装nvm 我们可以使用nvm来管理node.js的版本。 下载nvm windows下载地址:https://githu…

3.19 学习记录

完成了仓库管理系统的制作,基本无bug,所展示功能都可以实现,基于 springboot 和 vue3 具体实现如下: 登录管理员页面 有仓库管理,物资管理,库存管理和统计功能仓库工作人员页面

网站测速——提升用户体验的关键

在互联网飞速发展的今天,网站已成为企业展示形象、提供服务以及用户获取信息的重要平台。而网站的速度,如同高速公路的路况,直接影响着用户的访问体验和满意度。因此,网站测速成为了网站运营和维护中不可或缺的关键环节。 网站速度对企业来说真的那么重要吗?​ 网站测速的…

表单和载荷的区别,以及python和js在处理json时的空格问题。

1、在 传载荷的时候,用json= 这样传底层会调用json.dumps来转换,如:response = requests.post(url,headers=headers,params=params,data=json.dumps(data.separators=(,":")) 2、在 传表单的时候,用data= 如:response = requests.post(url,headers=headers,…

荣誉| 触想TPC07-WIPC工控机荣获2025控制产品“新质”奖!

3月13日,第23届中国自动化与数字化“新质奖”评选颁奖典礼在无锡举办,触想自主研发的TPC07-WIPC工控机以卓越性能、灵活扩展和可靠性备受关注,获得2025控制产品“新质”奖。△ 触想代表朱涛(左四)上台领奖TPC07-WIPC系列工控机是触想面向边缘计算、机器视觉、AI智能等场景推…

汉诺塔游戏 | 数学益智游戏②

依托国产的 AI 豆包完成的网页端的汉诺塔益智游戏。前情概要 AI 辅助设计的一款数学益智游戏,汉诺塔游戏。 汉诺塔游戏body0 {font-family: Arial, sans-serif; text-align: left; background-color: #f4f4f9; display: flex; flex-direction: column; align-items: center; }…

20242801 2024-2025-2 《网络攻防实践》第3次作业

20242801 2024-2025-2 《网络攻防实践》第3次作业 一、实验内容使用tcpdump等网络流量分析工具对网络登陆过程进行嗅探,统计登陆通过中访问的ip地址信息。 使用wireshark或科来等网络分析工具,对以TELNET方式登陆BBS过程进行嗅探,查看BBS服务器的ip地址和访问端口,以及使用…

python 实验一(20241116魏铼)

课程:《Python程序设计》 班级: 2411 姓名: 魏铼 学号:20241116 实验教师:王志强 实验日期:2025年3月19日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行调试分析,要有过程) 3.编写程序,练习变量和…

工具-安装uTools搜索工具

安装uTools工具 通过网盘分享的文件:uTools 链接: https://pan.baidu.com/s/10QoYus5aWO3b5bvTZ-c9uw?pwd=sky1 提取码: sky1 使用效果:alt + 空格键

“四预”驱动数字孪生水利:让智慧治水守护山河安澜

近年来,从黄河秋汛到海河特大洪水,从珠江流域性洪灾到长江罕见骤旱,极端天气频发让水安全问题备受关注。如何实现“治水于未发”?数字孪生水利以“预报、预警、预演、预案”(四预)为核心,正在掀起一场水利治理的智慧革命。 一、数字孪生水利:从物理世界到虚拟镜像的跃迁…

Pydantic模型继承解析:从字段继承到多态模型

title: Pydantic模型继承解析:从字段继承到多态模型 date: 2025/3/19 updated: 2025/3/19 author: cmdragon excerpt: 涵盖字段继承、属性覆盖、多态模型等关键机制。将掌握类型安全的继承体系构建方法,实现企业级数据校验方案,避免传统面向对象继承的常见陷阱。 categori…