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

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.lryc.cn/news/478562.html

相关文章:

  • ubuntu如何卸载colmap
  • 【comfyui教程】ComfyUI即将迎来全新界面:升级体验就在11月15日
  • Leecode热题100-104.二叉树的最大深度
  • 深度学习中的 Dropout:原理、公式与实现解析
  • 【大数据学习 | HBASE】habse的表结构
  • 完成程序《大奖赛评分B》
  • K8S篇(基本介绍)
  • linux alsa-lib snd_pcm_open函数源码分析(三)
  • 基于ssm的个人健康管理系统
  • Debian下载ISO镜像的方法
  • 大厂面试真题-简单说说线程池接到新任务之后的操作流程
  • 「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
  • C++关键字:mutable
  • Agent 智能体开发框架选型指南
  • 基于Zynq FPGA对雷龙SD NAND的测试
  • AOSP沙盒android 11
  • 【JWT】Asp.Net Core中JWT刷新Token解决方案
  • AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
  • stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?
  • 【UE5】在材质中实现球形法线技术,常用于改善植物等表面的渲染效果
  • 【MATLAB源码-第210期】基于matlab的OFDM电力线系统仿真,不同梳状导频间隔对比。三种信道估计,三种插值误码率对比
  • 基于SpringBoot的城镇保障性住房管理策略
  • 支持高性能结构化数据提取的 Embedding 模型——NuExtract-v1.5
  • 【C#】设计一个选购计算机配置的应用程序
  • solo博客源码使用idea编译运行
  • VBA07-方法
  • spring boot 统一异常处理
  • 跟着小土堆学习pytorch(六)——神经网络的基本骨架(nn.model)
  • 数字化落地过程中的研发效能治理如何开展?
  • Windows安装配置node.js