Python进阶之IO操作

news2024/11/8 4:59:16

文章目录

  • 一、文件的读取
  • 二、文件内容的写入
  • 三、之操作文件夹
  • 四、StringIO与BytesIO


一、文件的读取

在python里面,可以使用open函数来打开文件,具体语法如下:

open(filename, mode)

filename:文件名,一般包括该文件所在的路径 
mode 模式 如果读取时读取中文文本

需要在打开文件的时候使用encoding指定字符编码为utf-8

open函数的mode参数:
在这里插入图片描述
读取文件的内容,使用read相关方法

使用read方法,读取文件的全部内容(如果文件较大,一次性读取可能会导致内存不足

此时需要指定使用readline方法,读取文件的一行

readlines()一次读取所有内容并按行返回list
file = open("D:\class.txt", "r" ,encoding="utf-8")
print(file.read())
print(file.readline())

注意事项:
每次打开文件完成相应操作之后,都必须关闭该文件,且因为文件在读写过程中可能出现IOError
而导致文件不能正常关闭,所以每次读写文件时,必须使用try finally语法包裹,使其最终都能正
常关闭文件

try:
    file = open("D:\class.txt", "r" ,encoding="utf-8")
    print(file.read())
    print(file.readline())
    
finally:
    file.close()

二、文件内容的写入

同样的写入文件内容时,需要些使用open打开文件,相应的mode指定为可写入,之后可以使用write函数进行文件的写入

try:
    file = open("D:\class.txt", "w", encoding="utf- 8")
    file.write("123456")
finally:
    file.close()

使用这种方法,确实可以进行文件的写入,但是每次打开之后,会发现原来所有的文本内容均被覆盖,如果想保留原来的内容,只是在文件的后追加内容,这个时候使用参数a,表示append,用于追加

try:
    file = open("D:\class.txt", "a", encoding="utf- 8")
    file.write("789")
finally:
    file.close()

三、之操作文件夹

创建文件夹

可以使用os.mkdir(dir_name)来在当前目录下创建一个目录

import os

os.mkdir("test\\py")

创建多级文件夹

import os

os.mkdir("test\\py\\demo")

获取当前所在目录

import os 

print(os.getcwd())

改变当前的工作目录

import os 

os.chdir("test") 

print(os.getcwd())

删除空文件夹

import os 

os.rmdir("test")

删除多层空文件夹

import os 

os.removedirs("test\\java")

四、StringIO与BytesIO

当不需要往新建文件并写入,我只想直接在内存中缓存这些文本,此时StringIo,BytesIo就派上用场了
StringIo,BytesIo均属于io包下(3.7环境),均用于像操作文件一样,临时在内存中缓存文本,两者
api与直接进行问下文件io的操作相似。StringIO跟ByteIo的区别在于前者写入字符串,后者写入二进

每次使用完StringIO之后,都必须显式进行关闭,也可使用with语法

from io import StringIO
from io import BytesIO

string_io = StringIO()
string_io.write("helloworld")
print(string_io.getvalue())
string_io.close()

with StringIO() as string_io:
    string_io.write("hello")
    string_io.write("world")
    print(string_io.getvalue())
    print(string_io.closed)


byte_io = BytesIO()
byte_io.write("中国".encode("utf-8"))
byte_io.write("台湾".encode("utf-8"))
print(byte_io.getvalue())
print(str(b'\xe4\xb8\xad\xe5\x9b\xbd\xe5\x8f\xb0\xe6\xb9\xbe',"utf-8"))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ECharts折线图背景渐变设置

目录 引入 1.在一个HTML文件中编写两个图表 2.渐变背景 引入 如何在一个HTML文件中编写两个图表:(这个例子基于这个篇文章的基础)一篇搞懂前端获取数据-CSDN博客 一个例子: 1.在一个HTML文件中编写两个图表 重点在于名字的不重…

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“乐校园二手书交易管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 用户注册界面图 二手…

CSS弹性布局:灵活布局的终极指南

在网页设计中,CSS 弹性布局(Flexbox)是一个不可或缺的工具。它能帮助你轻松地排列和对齐元素,尤其是在响应式设计中表现出色。今天,我们就来深入探讨一下 Flexbox 的各个属性,让你彻底掌握这个强大的布局工…

OpenJDK Vendor下载选择

首先JDK可以通过idea进行安装 File➡️Project Structure➡️SDK➡️Add SDK➡️Download JDK 然后在JDK版本选择时,Idea提供了很多版本,让我茫然了 OpenJDK国外厂商 供应商 说明 Amazon Corretto 亚马逊云基于OpenJDK构建,收费 Eclipse…

SAP-ABAP开发-ONLINE 程序、DIALOG屏幕开发

目录 一、Online 程序概览 1、程序类型 2、Online程序的主要对象 二、界面 1、SAP的屏幕开发 2、屏幕功能实现 3、界面中的事件块(Event Block) 4、界面的创建 三、简单界面元素 1、文本/输入框控件 2、数据检查 3、一些常用的关键字 四、复…

基于vue框架的的留守儿童帮扶系统143b5(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:留守儿童,帮扶活动,申请记录,帮扶机构,帮扶进度,帮扶人,申请加入记录,参与帮扶记录 开题报告内容 基于Vue框架的留守儿童帮扶系统开题报告 一、研究背景与意义 随着城乡经济差异的不断扩大,大量农村劳动力涌向城市寻求更好…

xftp连接中不成功 + sudo vim 修改sshd_config不成功的解决方法

我们使用sudo vim不成功,但是我们使用sudo su就可以 了! root用户权利更大! 喵的,终于成功了,一个xftp连接半天不成功。(添加上面的内容就可以连接成功了↑)

这款Chrome 插件,使浏览器页面快速滑动到最底部和最顶部,并且还能...

前言 前几日我在使用谷歌浏览器,也就是chrome的时候,浏览一个内容很长的页面,由于页面上的内容有前后关联,所以我必须不停地切换到上面和下面。这非常不方便。使我非常抓狂。后来,我灵机一动,去谷歌浏览器…

嵌入式linux中设备树控制硬件的方法

大家好,今天主要给大家分享一下,如何使用linux系统下的设备树进行硬件控制方法。 第一:linux系统中设备树驱动LED原理 在linux系统中可以使用设备树向Linux内核传递相关的寄存器地址,linux驱动中使用OF函数从设备树中获取所需的属性值,然后使用获取到的属性值来初始化相关…

2024年网鼎杯青龙组|MISC全解

转载或摘抄时请标明出处 MISC01 wdbflag{22226aba1d98c4302a6f508cad7da5d8} MISC02 一把梭工具没有任何结果,估计缺少符号表,直接strings flag > out.txt导出后慢慢找线索 在桌面上发现了png和txt文件,用文件名做一次筛选 第一行发现bas…

AI驱动无人驾驶:安全与效率能否兼得?

内容概要 如今,人工智能正以其神奇的魔力驱动着无人驾驶的浪潮,带来了无数令人兴奋的可能性。这一领域的最新动态显示,AI技术在车辆的决策过程和实时数据分析中发挥着重要作用,帮助车辆更聪明地应对复杂的交通环境。通过实时监测…

华为手机卸载系统应用的方法

摘要: 1.手机环境:手机需要开启开发者模式并使用usb连接电脑,并选择文件传输模式 2.电脑环境:使用鸿蒙工具箱进行傻瓜操作或安装adb工具进行命令卸载 3.鸿蒙工具箱和adb工具本质都是使用adb shell pm uninstall -k --user 0 xx…

一文看懂芯片算力TOPS

AI算力的发展与TOPS(Tera Operations Per Second)紧密相关。TOPS是衡量芯片每秒能执行的基本操作次数的单位,通常用于评估AI芯片性能,特别是在处理大量整数或定点运算任务时。随着AI技术进步,对算力的需求不断增加&…

在Linux系统中高效查找文件所在位置的方法

目录 引言 一、使用find命令查找文件 二、使用locate命令快速查找文件 三、利用which和whereis命令查找可执行文件 四、使用findmnt和mount命令查找挂载点 五、其他查找文件的方法 六、总结与最佳实践 引言 Linux操作系统以其强大的功能和灵活性而闻名,其文件…

连锁餐饮企业-凡塔斯,用千里聆RPA搭建用户评价管理系统,提升门店服务满意度

凡塔斯是大型连锁餐饮企业昊澜餐饮集团旗下餐饮品牌,是牛排自助餐头部品牌,旗下拥有凡塔斯、百分好、食物链KING自助烤肉及餐饮人才商学院等多个行业知名品牌。 创立至今,集团管理门店已发展到福建、广东、江西、浙江等十多个省市&#xff0c…

MES管理系统的生产绩效分析与资源可追踪性

在探讨MES管理系统的核心功能时,生产绩效分析与资源可追踪性是两个不可或缺的关键要素。它们共同构成了MES管理系统中对于生产效率、成本控制以及产品质量进行精细管理的基石。以下是对这两个关键领域的深入剖析与重新阐述。 MES管理系统中的生产绩效分析&#xff0…

远程控制项目第四天 功能实现

发送屏幕内容 代码详解 1. 创建 CImage 对象并获取屏幕内容 首先,我们创建一个 CImage 对象,用于接收屏幕上的内容。要获取屏幕内容,我们需要先获取当前设备上下文(DC)。调用 ::GetDC(NULL) 函数,参数 NU…

无线领夹麦克风哪个品牌音质最好?无线麦克风品牌排行榜前十名

​无线领夹麦克风哪个品牌音质最好?选择无线麦克风时,音质和耐用性至关重要。近年来,无线麦克风产品越来越智能化和多样化,但也存在着大量的劣质产品。作为测评师,我发现这些低质量无线麦克风由于缺乏专业调校&#xf…

【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】

在 Kubernetes 中,NodePort 类型的 Service 允许用户通过每个节点的 IP 地址和指定的端口访问应用程序。如果 NodePort 类型的 Service 无法通过节点的 IP 地址和指定端口进行访问,可能会导致用户无法访问应用。本文将详细分析该问题的常见原因及其解决方…

并发编程(8)—— std::async、std::future 源码解析

文章目录 八、day81. std::async2. std::future2.1 wait()2.2 get() 八、day8 之前说过,std::async内部的处理逻辑和std::thread相似,而且std::async和std::future有密不可分的联系。今天,通过对std::async和std::future源码进行解析&#x…