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.xdnf.cn/news/5210.html

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

相关文章

Bert框架详解(上)

目录 一、传统的自然语言处理框架存在的问题 1、RNN网络计算时存在的问题 2、传统word2vec存在的问题 二、Bert模型机制 1、编码-解码框架(Encoder-Decoder) (1)、编码器(Encoder) (2&…

SuperMap iDesktop 崖山数据库型的数据源创建

作者:lzzzz 本文主要介绍如何创建崖山数据库型的数据源,使用版本为超图idesktopX:11.2.1 ,使用环境:Windows 10;yashandb:23.2.5.100,使用环境:centos 7.9。 崖山数据库…

今日 AI 简报| Claude 推出 AI 自动化操作电脑功能、浏览器 AI 助手、全栈 AI 应用构建器、全能文档解析工具等

❤️ 如果你也关注大模型与 AI 的发展现状,且对大模型应用开发非常感兴趣,我会快速跟你分享最新的感兴趣的 AI 应用和热点信息,也会不定期分享自己的想法和开源实例,欢迎关注我哦! 🥦 微信公众号&#xff…

VS2022远程连接调试编译Linux环境下的C++代码

工具:VS2022 虚拟机:RHEL 8.0 一、下载必要工具 1.VS2022组件安装 打开VS2022Installer,点击修改下载必要工具。 选择Linux 和嵌入式开发,然后点击右下角的修改! 等待安装........ 安装完成后,创建Linu…

详解Java之Spring MVC篇二

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

基于SSM的学生考勤管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

鸿萌数据迁移服务: 完善的数据迁移策略, 是数据迁移项目成功的保障

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据存储、数据恢复、数据备份、数据迁移等解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 鸿萌数据迁移业务为众多企业顺利高效…

穿越文化与时空的回响——从廖问洁《红豆诗词选》看当代人文情怀

穿越文化与时空的回响 ——从廖问洁《红豆诗词选》看当代人文情怀 在快节奏的现代生活中,我们时常感到身心的疲惫,渴望找到一种能够洗涤内心的方式。而廖问洁的《红豆诗词选》就如同一股清泉,为我们带来了心灵的洗礼和慰藉。 这位来自94年的…

机器学习—TensorFlow实现

继续运行手写数字识别的示例,识别此图像,一个0还是1,我们所使用的是神经网络架构,其中有一个输入X,然后是第一个隐藏层,有25个单位,第二个隐藏层,有15个单元,然后一个输出…

外包干了两年,快要废了。。。。

先说一下自己的情况,普通本科,在外包干了2年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会让一…

基于backtrader实现人工智能LOF的择时,optstrategy实现最优参数搜索(年化从9%提升至15.4%)

原创内容第695篇,专注量化投资、个人成长与财富自由。 今日策略 今天的策略是基于backtrader实现人工智能LOF的择时,通过backtrader的参数优化功能,找到最优参数。 策略主体: 策略有三个参数,一是动量周期&#xff…

autodl怎么清理数据盘垃圾缓存

首先进入到root/autodl-tmp文件夹下,然后执行这个命令 du -h --max-depth1 .查看当前目录下各个子目录占用的内存 可以看到,./.Trash-0 目录下有太多垃圾了。清理 ./.Trash-0 目录,可以使用以下命令来删除该目录中的所有内容 rm -rf ./.Tr…

ctfshow(162)--文件上传漏洞--远程文件包含

Web162 进入界面: 思路 先传个文件测试一下过滤: 过滤了特别多符号,注意过滤了点. 我们的思路还是要先上传.user.ini文件: //修改前 GIF89a auto_prepend_fileshell.png//由于过滤了点,所以修改为 GIF89a auto_prepend_file…

开源IM即时通讯源码 / Java仿微信即时通讯APP源码 + 红包 + 客服 + 禁言 / WebSocket + uniapp框架开发

即时通讯应用已经成为现代社交和工作环境中的重要工具,而IM(即时通讯)系统的设计与开发也逐渐成为开发者关注的重点。本文将介绍一个基于Java开发的开源IM即时通讯系统,模拟微信的即时通讯功能,涵盖了红包、客服、禁言…

拒绝事后背锅:测试项目中的风险管理一定要知道

在博主的公司中,测试经理除了要管理产品线的质量保障和日常部门事务工作外,另一项比较重要的就是测试项目全流程的管理。 今天不聊整体的测试项目流程如何开展,而是想聊一聊在同行中比较高频出现的一个字眼:风险管理。 什么是风…

4.1 WINDOWS XP,ReactOS对象与对象目录----1

系列文章目录 文章目录 系列文章目录4.1 对象与对象目录OBJECT_HEADERObpLookupEntryDirectory()NtCreateTimer() 4.1 对象与对象目录 “对象(Object)”这个词现在大家都已耳熟能详了,但是对象到底是什么呢?广义地说,对象就是“目标”,行为…

数据结构——栈

栈 1. 栈的概念和结构2. 栈的实现2.1 原型声明2.2 初始化和销毁2.3 入栈 出栈2.4 取栈顶数据2.5 判空2.6 获取数据个数 3. 总结 🔥 博客主页: 偷心编程 🎥 系列专栏: 《Java学习》 《C语言学习》 《数据结构C语言版》 ❤️ 感谢大家点赞👍收…

谷歌浏览器中编辑并重发请求

文章目录 1、直接重发请求2、修改传参后重发请求3、可能的报错 有时候,需要调整请求参数后,重新发送请求,查看响应,从浏览器搬到Postman太繁琐,可直接在浏览器进行编辑并重发 1、直接重发请求 F12 > Network >…

day19作业

注册登录 #include "log.h" void reg() {char name[20],pwd[20];printf("请输入账号:");fgets(name,sizeof(name),stdin);printf("请输入密码:");fgets(pwd,sizeof(pwd),stdin);//name[strlen(name)-1]\0;printf("账…

[LitCTF 2023]ez_XOR

文件无壳 拖入ida 查看主函数伪c代码 继续跟进xor函数 函数遍历输入的字符串 Str,对每个字符执行异或操作,并将字符与 3 * a2 异或 所以题目的加密过程是将字符串E}J]OrQF[V8zV:hzpV}fVF[t与3异或 写出脚本 def XOR_encrypt(input_str, a2):encrypted_…