python文件与目录操作

目录

文件编码

文件的读取

打开文件

mode常用的三种基础访问模式

读取文件

关闭文件

with open语法

文件的写入操作

文件综合案例

a.txt内容

代码实现

b.txt文件

目录操作

前言

os模块

具体方法 

os.path模块

具体方法 

文件编码

前言:由于计算机只能识别0和1,所以我们丰富的文本文件通过使用编码技术(密码本)将内容翻译成0或1存入

编码技术:即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译成可识别的内容

注意:计算机中有许多可用的编码(UTF-8、GBK、Big5)等,不同的编码,将内容翻译的二进制也是不同的,所以要使用正确的编码,才能对文件进行正确的读写操作

文件的读取

前言:内存中存放的数据在计算机关机后就会消失,要想长久的保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索因此引入了文件的概念

注意:

  • 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名
  • 操作系统以文件为单位管理磁盘中的数据。
  • 文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别
  • 在生活中,文件的操作主要包括打开、关闭、读、写等操作

打开文件

语法:文件对象=open(name,mode,encoding=编码格式)

参数解释 

  • name:要打开得目标文件名的字符串(可以包含文件所在的具体路径)
  • mode:设置打开文件的模式(访问模式):只读、写入、追加等
  • 编码格式:文件编码的格式(推荐使用UTF-8)

注意:

  • 里面传入的三个参数均为字符串格式 
  • 因为encoding并不是第三个参数,所以不能用顺序传参

mode常用的三种基础访问模式

读取文件

语法:变量=文件对象.read(num)

解释:num表示要从文件中读取的数据长度(单位是字节),若没有传入num,那么就表示读取文件所有的数据

语法:变量=文件对象.readlines()

解释:readlines可以按照行的方式把整个文件的内容进行一次性读取,并且返回的是一个列表,其中的每一行数据为一个元素

语法:变量=文件对象.readline()

解释:一次读取一行内容

for循环读取文件行

for line in 文件对象:
    print(line)

理解:每一个line临时变量,就记录了文件的一行数据 

注意:我们在读取文件时,只要该文件对象打开之后,后面不管调用什么文件读取方法,他都会续接上一次读取文件的方法。

关闭文件

语法:文件对象.close()

注意:若不调用close,同时程序没有停止运行,那么这个文件将一直被python程序占用

with open语法

with open(name,mode,encoding) as 文件对象变量:
    f.readlines()

注意:通过with open的语句块对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法

文件的写入操作

写入文件到内存:文件对象.write(写入的内容)

文件刷新:文件对象.flush()

注意

  • 使用open函数对于w模式写入文件的时候,文件不存在则会创建文件,文件存在则会覆盖原文件内容;对于a模式文件不存在则会创建文件,文件存在则会在源文件基础上追加内容
  • 这里a参数的文件追加是关闭文件后也可以追加,若没关闭文件对于w参数调用写文件始终是追加模式
  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush/close的时候,内容会真正写入硬盘
  • 这样做的目的是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写入硬盘)

文件综合案例

需求:将a.txt文件中的内容备份到b.txt文件中

a.txt内容

代码实现

#打开a.txt文件
fr=open("D:/test/a.txt","r",encoding="UTF-8")
#打开b.txt文件,准备写入
fw=open("D:/test/b.txt","w",encoding="UTF-8")
#读取a.txt文件的所有数据
for line in fr:
    #将每次读取的数据写入b.txt
    fw.write(line)
#将内存中的数据刷新至硬盘
fw.flush()
#关流
fw.close()
fr.close()

b.txt文件

目录操作

前言

  • os模块是python内置与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样
  • os模块与os.path模块用于对目录或文件进行操作,其是python系统自带的一个模块

os模块

使用前:import os

具体方法 

import os
#执行命令行语句
os.system("python -V")
#直接启动文件
os.startfile("D:/test/a.txt")
#返回指定路径下的文件和目录信息
print(f"文件和目录信息:{os.listdir('D:/app/youdao')}")
#创建目录
os.mkdir("D:/test/dir1")
#创建多级目录
os.makedirs("D:/test/dir2/dir3")
#删除目录
os.rmdir("D:/test/dir1")
#删除多级目录
os.removedirs("D:/test/dir2/dir3")
#设置当前工作目录
os.chdir("D:/test")
#当前的工作目录
print(f"当前的工作目录为{os.getcwd()}")

os.path模块

使用前:import os.path

具体方法 

import os.path
#获取当前位置的绝对路径(end.py为当前位置的文件)
print(os.path.abspath("end.py"))
#判断当前文件夹下的文件或目录是否存在
print(os.path.exists("end.py"))
#将目录与目录或目录与文件名拼接
print(os.path.join("D\python", "app.txt"))#D\python\app.txt
#分离路径和文件名
print(os.path.split("D:\projects\end.py"))#('D:\\projects', 'end.py')
#分离文件名和扩展名
print(os.path.splitext("app.py"))#('app', '.py')
#从一个目录中提取文件名
print(os.path.basename("D:\projects\end.py"))#end.py
#从一个目录中提取目录不包括文件名
print(os.path.dirname("D:\projects\end.py"))#D:\projects
#判断是否为目录(有end.py不是)
print(os.path.isdir("D:\projects\end.py"))#False

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka-保证数据不重复-生产者开启幂等性和事务的作用?

1. 生产者开启幂等性为什么能去重? 1.1 场景 适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的ACK消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消…

AI大模型之花,绽放在鸿蒙沃土

随着生成式AI日益火爆,大语言模型能力引发了越来越多对于智慧语音助手的期待。 我们相信,AI大模型能力加持下的智慧语音助手一定会很快落地,这个预判不仅来自对AI大模型的观察,更来自对鸿蒙的了解。鸿蒙一定会很快升级大模型能力&…

No111.精选前端面试题,享受每天的挑战和学习

文章目录 map和foreach的区别在组件中如何获取vuex的action对象中的属性怎么去获取封装在vuex的某个接口数据有没有抓包过?你如何跟踪某一个特定的请求?比如一个特定的URL,你如何把有关这部分的url数据提取出来?1. 使用网络抓包工…

基于Go编写一个可视化Navicat本地密码解析器

前提 开发小组在测试环境基于docker构建和迁移一个MySQL8.x实例,过程中大意没有记录对应的用户密码,然后发现某开发同事本地Navicat记录了根用户,于是搜索是否能够反解析Navicat中的密码掩码(这里可以基本断定Navicat对密码是采用…

数据结构-二叉树

数据结构-二叉树 二叉树的概念二叉树的遍历分类 建立二叉树,并遍历二叉树的最小单元二叉树的最小单元初始化初始化二叉树前序遍历的实现中序遍历的实现后序遍历的实现计算节点的个数计算树的深度求第k层的个数查找二叉树的元素分层遍历 全部代码如下 二叉树的概念 二…

康冠医疗2021笔试题

笔试时间:2020.09.24。 岗位:嵌入式软件工程师。 题型:13道题,40分钟。 6道填空,2道简答,5道编程,时间紧任务重。 1、填空 4、考察extern关键字。 6、const可以用来代替define ,define 只是简单的代替,但是const还会进行类型检查。 怎么避免头文件重复包含: #…

Android 13(T) - Media框架(2)- libmedia

这一节学习有两个目标: 1 熟悉Android Media API的源码路径与调用层次 2 从MediaPlayer的创建与销毁了解与native的串接 1、源码路径 Media相关的API位于:frameworks/base/media/java/android/media,里面提供有MediaPlayer MediaCodecList M…

基于SpringBoot+Vue的MOBA类游戏攻略分享平台设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

C++初阶引用

目录 引用引用的特性使用输出型参数作返回值小总结引用的权限引用和指针 引用 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如周树人,在外…

spring.config.location 手动指定配置文件文件

–spring.config.locationD:\javaproject\bangsun\ds-admin\ds-oper-mgr\src\main\resources\application.yml

网络安全/黑客-自学经验

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏入…

2023华数杯数学建模C题母亲对婴儿影响论文完整讲解

大家好呀,从昨天发布赛题一直到现在,总算完成了华数杯数学建模C题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C题论文共72页,一些修改说…

css实现,正常情况下div从左到右一次排列,宽度超出时,右侧最后一个div固定住,左侧其他div滚动

需求:正常情况下 宽度超出时: 实现: <templete><div class"jieduanbox"><div v-for"(item, index) in stageList" :key"index" style"display: inline-block">.......</div><div class"rightBtn&q…

STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…

RVC实时变声器最新版

文章目录 一、前言二、变声器下载使用下载解压声音设置模型下载模型使用 一、前言 上次写的RVC变声器更新了&#xff0c;可能是用户的激增&#xff0c;原作者也更新的比较勤&#xff0c;本文只对变声器客户端更新使用教程&#xff0c;其他训练等等与上次一样。旧版教程 二、变…

【c++】VSCode配置 c++ 环境(重新制作)

上一篇帖子【c】VSCode配置 c 环境&#xff08;小白教程&#xff09;_vscode配置c/c环境_StudyWinter的博客-CSDN博客 大火&#xff0c;但是依旧有很多小伙伴反应没有配好环境&#xff0c;今天打算重新写一个教程&#xff0c;希望对大家有帮助。 1 MinGW下载安装 在CSDN上传了…

27 使用Arrays.asList生成的集合无法使用add、addAll方法及解决方法。

27.1 原因 使用 Array.asList方法生成的ArrayList继承的是AbstractList抽象类 &#xff0c;如下图所示。 AbstractList又继承了AbstractCollection抽象类&#xff0c;实现了List接口的方法&#xff0c;如下图所示。 如下图所示。可以发现&#xff0c; AbstractionCollection实现…

神码ai火车头标题伪原创【php源码】

这篇文章主要介绍了如何把python 代码打包成可执行软件&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 火车头采集ai伪原创插件截图&#xff1a; Python 程序封装-打包成exe程…

公文写作技巧:“三面镜子”写作提纲60例

写作技巧&#xff1a;“三面镜子”写作提纲60例 1. 用好“三面镜子” 推深做实警示教育 勤用“反光镜”以案为鉴。 善用“显微镜”以案明纪。 巧用“聚光镜”以案促改。 2. 年轻干部要用好“三面镜子” 用好“反光镜”&#xff0c;照亮基层中的“暗点” 用好“显微镜”&am…

【Kubernetes】Kubernetes之二进制部署

kubernetes 一、Kubernetes 的安装部署1. 常见的安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署2. K8S 部署 二进制与高可用的区别2.1 二进制部署2.2 kubeadm 部署二、Kubernetes 二进制部署过程1. 服务器相关设置以及架构2. 操作系统初始化配置3. 部署 etcd 集群4. 部…
最新文章