Python进阶之IO操作

文章目录

  • 一、文件的读取
  • 二、文件内容的写入
  • 三、之操作文件夹
  • 四、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 osos.mkdir("test\\py")

创建多级文件夹

import osos.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 BytesIOstring_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.mzph.cn/bicheng/59618.shtml

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

相关文章

《安富莱嵌入式周报》第345期:开源蓝牙游戏手柄,USB3.0 HUB带电压电流测量,LCR电桥前端模拟,开源微型赛车,RF信号扫描仪,开源无线电收发器

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程 第5期:RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-1…

「Mac畅玩鸿蒙与硬件20」鸿蒙UI组件篇10 - Canvas 组件自定义绘图

Canvas 组件在鸿蒙应用中用于绘制自定义图形,提供丰富的绘制功能和灵活的定制能力。通过 Canvas,可以创建矩形、圆形、路径、文本等基础图形,为鸿蒙应用增添个性化的视觉效果。本篇将介绍 Canvas 组件的基础操作,涵盖绘制矩形、圆…

用流量策略做多出口实验

一、拓扑: 二、配置过程: 1、配置 IP 地址,配置动态路由协议 OSPF 2、AR2 上,配置高级 ACL,允许 ospf 流量、1 到 6、2 到 8、deny 所有 3、写流分类,抓取流量特征 4、写流行为,配置流量动作 5、…

【Golang】sql.Null* 类型使用(处理空值和零值)

sql.NullString 和 sql.NullInt64 类型(以及其他类似的 sql.Null* 类型)在处理数据库操作时非常有用,尤其是在 Go 语言的 database/sql 包中。它们的主要用途包括: 表示 NULL 值: 在数据库中,NULL 表示“没…

【前端】如何在 JSX 中使用条件语句和循环

在 JSX 中使用条件语句和循环是常见的需求,尤其是在构建动态用户界面时。以下是如何在 JSX 中使用条件语句和循环的详细说明。 条件语句 1. 三元运算符 三元运算符是最简单的条件语句形式,适用于简单的条件判断。 const isLoggedIn true;const ele…

Rust移动开发:Rust在Android端集成使用介绍

Andorid调用Rust 目前Rust在移动端上的应用,一般作为应用sdk的提供,供各端使用,目前飞书底层使用Rust编写通用组件。 该篇适合对Android、Rust了解,想看如何做整合,如果想要工程源码,可以评论或留言有解疑…

UE hard/soft reference| DDX DDY | Unity pcg color

目录 1.虚幻引擎性能优化 (附0跳转Unity对应机制) hard reference and soft reference 1. 硬引用(Hard Reference) 2. 软引用(Soft Reference) 3. 使用原则 2.空间梯度转法线 DDX DDY节点 ​编辑 …

【UE5】一种老派的假反射做法,可以用于移动端,或对反射的速度、清晰度有需求的地方

没想到大家这篇文章呼声还挺高 这篇文章是对它的详细实现,建议在阅读本篇之前,先浏览一下前面的文章,以便更好地理解和掌握内容。 这种老派的假反射技术,适合用于移动端或对反射效果的速度和清晰度有较高要求的场合。该技术通过一…

前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)

一、相对定位 使用相对定位的盒子会相对于自身原本的位置,通过偏移指定的距离,到达新的位置。盒子的本体仍处于文档流中。使用相对定位,除了要将 position 属性值设置为 relative 外,还需要指定一定的偏移量。其中,水…

基于微信小程序的移动学习平台的设计与实现+ssm(lw+演示+源码+运行)

摘 要 由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管理者必须改…

git 工具原理

git 目录 git git的使用 了解git的三个区域 具体操作 如何下载别人上传到git的工程 -- 可以参考菜鸟教程,包括安装配置git Git 安装配置 | 菜鸟教程 -- Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torval…

Linux操作系统:学习进程_对进程的深入了解

目录 前言 开篇 一、进程概念 二、进程的描述与管理 1、如何描述与管理 2、Linux中的PCB-task_struct 3、对进程组织的理解 三、进程的属性 1、系统创建进程 2、查看进程 3、进程的标识符 4、退出进程 1>ctrlc 2>kill命令杀死进程 5、用户进程的创建方式…

力扣:225 用队列实现栈

栈、队列 栈: 弹夹,后进先出 队列: 排队,先进先出 描述: var MyStack function () {// 定义两个数组,模拟队列this.queue []this._queue [] };/** * param {number} x* return {void}*/ MyStack.protot…

lora训练模型 打造个人IP

准备工作 下载秋叶炼丹器整理自己的照片下载底膜 https://rentry.org/lycoris-experiments 实操步骤 解压整合包 lora-scripts,先点击“更新” 训练图片收集 比如要训练一个自己头像的模型,就可以拍一些自己的照片(20-50张,最少15张&…

IO 多路复用技术:原理、类型及 Go 实现

文章目录 1. 引言IO 多路复用的应用场景与重要性高并发下的 IO 处理挑战 2. IO 多路复用概述什么是 IO 多路复用IO 多路复用的优点与适用场景 3. IO 多路复用的三种主要实现3.1 select3.2 poll3.3 epoll三者对比 4. 深入理解 epoll4.1 epoll 的三大操作4.2 epoll 的核心数据结构…

大数据新视界 -- 大数据大厂之 Impala 性能优化:从数据压缩到分析加速(下)(8/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

信息学奥赛一本通 1395:烦人的幻灯片(slides)

【题目链接】 ybt 1395:烦人的幻灯片(slides) 【题目考点】 1. 图论:拓扑排序 【解题思路】 先理解题意: 如图,每张幻灯片是一个矩形,在该矩形范围内有一个位置写了这张幻灯片的编号。但实际情况是幻灯片是透明…

DB-GPT系列(三):底层大模型设置(开源模型、在线模型)

前面两篇文章分别对 DB-GPT 的总体情况进行了介绍,同时涵盖了镜像一键部署与源码部署这两种部署方式。 DB-GPT系列(一):DB-GPT能帮你做什么? DB-GPT系列(二):DB-GPT部署&#xff0…

LabVIEW配电产品精度测试系统

开发了一种基于LabVIEW平台的配电产品精度测试系统,通过自动化测试流程实现更高的测试准确性与效率。系统采用串口和TCP通信技术,与多功能交流采样变送器和配电设备无缝数据交互,提升了测试工作的可靠性和一致性。 一、项目背景 在配电产品…

详解Java之Spring MVC篇二

目录 获取Cookie/Session 理解Cookie 理解Session Cookie和Session的区别 获取Cookie 获取Session 获取Header 获取User-Agent 获取Cookie/Session 理解Cookie HTTP协议自身是“无状态”协议,但是在实际开发中,我们很多时候是需要知道请求之间的…