博客
关于我
读写文件 及 输入和输出 知识详解
阅读量:556 次
发布时间:2019-03-09

本文共 2048 字,大约阅读时间需要 6 分钟。

读写文件与输入输出操作详解

基本概念与工具

在Python中,读写文件的操作是程序开发中常见但又不够直观的环节。掌握这一技能对于数据处理、软件开发等工作都是必不可少的。本文将详细介绍Python文件操作的核心工具和相关命令。

文件操作的工具说明

文件操作的关键在于了解open()函数的用法和文件模式选择。大多数情况下,open()函数的调用方式如下:

open(filename, mode='r', encoding='utf-8')

其中:

  • mode参数指定文件操作方式,默认为读取模式'r'
  • encoding参数指定字符编码格式,默认为None,建议使用'utf-8''gbk'
  • 其他如bufferingnewline等参数可以根据具体需求进行调整。

文件操作模式的具体含义:

  • r:只读模式
  • w:写入模式,高位文件会被截断
  • x:创建新文件并写入,如果文件不存在则创建
  • a:追加模式,内容加到文件末尾
  • rb:二进制读取模式
  • wb:二进制写入模式
  • +:读写混合模式

文件操作示例

例1:读写文档

with open("review", mode="rt", encoding="utf-8") as file_obj:
data = file_obj.read()
print("读取内容:", data)
with open("tushuguan.txt", mode="wt", encoding="utf-8") as file_obj:
file_obj.write(data)
print("写入完成。")

运行代码后,会新建一个tushuguan.txt文件,内容与review文件相同。

例2:读写图片文件

with open("python.jpg", mode="rb") as file_img:
data = file_img.read()
with open("python_cp.jpg", mode="wb") as file_img:
file_img.write(data)
print("图片复制完成。")

运行后,python_cp.jpg会是python.jpg的副本。

复杂场景处理示例

除了简单的读写操作,文件操作还有更复杂的需求,如自动追加文件内容或指定读取行数:

自动追加内容

with open("huyi.txt", mode="a", encoding="utf-8") as file_obj:
file_obj.write("我学习云计算网络安全知识。\n")
file_obj.writelines(["现在我正在学习Python语言。\n","已经学习了HCPA和RHCSA课程。"])
print("已追加完成。")

读取部分内容

with open("review", encoding="utf-8") as file_obj:
data = file_obj.readlines(50)
print("读取的内容为:", data[:50])

输入输出操作

输入操作非常简单,直接使用input()函数即可:

获取输入并输出

data = input("请输入内容:")
print(f"输入内容:{data}, 类型:{type(data)}")

输出部分可以通过格式化字符串来美化内容排版:

格式化输出示例

name = "小明"
age = 20
print(f"My name is {name}, My age is {age}")
print(f"My name is {name}, My age is {age:.2f}")

表格输出示例

文字内容可以通过表格形式美化输出:

print("{0:^5}{1:^15}{2:^15}".format("姓名", "联系方式", "学校"))
print("{0:*<5}{1:*<15}{2:*<15}".format("张三", "11111111111", "西安石油大学"))
print("{0:>&<5}{1:>&<15}{2:>&<15}".format("李四", "22222222222", "西安交通大学"))

这些命令可以帮助将数据以美观的形式显示出来,适合用于展示结构化信息。

注意事项

  • 文件路径处理:确保文件路径正确,避免跨平台问题。推荐使用相对路径。
  • 错误处理:在处理文件时,务必添加异常捕捉,避免程序崩溃。
  • 文件锁机制:多线程环境下,文件读写可能存在竞态条件,可以使用机制解决。
  • 二进制文件处理:非文本文件需使用二进制模式'rb''wb'
  • 通过这些知识和示例,可以有效地完成文件操作和简单的数据处理任务。如果需要更高级别的操作,可以进一步学习文件对象的高级用法或使用第三方库如pandas进行大数据处理。

    转载地址:http://ockpz.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0011---Channel应用案例2
    查看>>
    Netty工作笔记0014---Buffer类型化和只读
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>