【python】--文件/文件夹读写及操作

目录

  • 一、文件读写
    • 1、文件读写代码示例
  • 二、文件/文件夹操作
    • 1、代码示例

一、文件读写

读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
在这里插入图片描述

1、文件读写代码示例

import osclass OperatorFile:def __init__(self,file_name):self.file_name = file_name"""将字符串或bytes类型的数据写入文件。可以多次重复进行,其实都是在内存中的操作,并不会立刻写回硬盘,直到执行close()方法后,才会将所有的写入操作反映到硬盘上。"""def write(self, content):f = open(self.file_name, "wa+")f.write(content)f.close()return "OK"def write1(self, content):f = os.open(self.file_name, os.O_RDWR|os.O_CREAT) #没有就创建一个文件re = os.write(f,content)  #re是返回写入的字符个数os.close(f)return re"""读取一定大小的数据, 然后作为字符串或字节对象返回。文件比较小,可用该方法"""def read(self):f = open(self.file_name, "r",encoding='utf-8',errors='ignore')str = f.read()print(str)f.close()return strdef read_v2(self):f = open(self.file_name, "r",encoding='utf-8',errors='ignore')try:str = f.read()print(str)finally:f.close()return strdef read_v3(self):with open(self.file_name, "r",encoding='utf-8',errors='ignore') as f:str = f.read()print(str)return str"""从文件中读取一行n内容。读一行,处理一行,并且不能回头,只能前进"""def readline(self):f = open(self.file_name, "r",encoding='utf-8',errors='ignore')str = f.readline()print(str)f.close()return str"""将文件中所有的行,一行一行全部读入一个列表内,按顺序一个一个作为列表的元素,并返回这个列表。每行都保存在列表里,可以随意存取。如果是配置文件,调用readlines()最方便。"""def readlines(self):f = open(self.file_name, "r",encoding='utf-8',errors='ignore')list = f.readlines()print(list)f.close()return list"""文件对象作为一个迭代器来使用。 不需要将文件一次性读出一般情况文件,该方法即可"""def ergodic_file(self):f = open(self.file_name, "r",encoding='utf-8',errors='ignore')dict={}i = 0for line in f:print(line, end='')dict[i] = linei = i + 1f.close()return dictdef main():file_name = "C:\\Users\\wwy\\Desktop\\新建文件夹\\py测试文件1.txt"operator_file = OperatorFile(file_name=file_name)str1 = operator_file.read()str2 = operator_file.read_v2()str3 = operator_file.read_v3()str4 = operator_file.readline()str5 = operator_file.readlines()str6 = operator_file.ergodic_file()print(str6)if __name__ == '__main__':main()

测试结果
在这里插入图片描述

二、文件/文件夹操作

在这里插入图片描述
常见的操作整理如下:
文件夹操作:包括文件夹的创建、修改(改名/移动),查询(查看、遍历)、删除等。
文件操作:包括文件的创建、修改、读取、删除等。
路径操作:文件夹或文件的路径操作,如绝对路径,文件名与路径分割,扩展名分割等

1、代码示例

import osclass OSFile:# 定义基本属性path=''file_name=''# 定义私有属性,私有属性在类外部无法直接进行访问__weight = 0def __init__(self,path,file_name): #init方法只能有一个self.path = pathself.file_name = file_nameself.__weight = 0def basic_way(self):print(os.getcwd())  #E:\work\pythonWork\flaskLearn_1\venv\Testprint(os.listdir(self.path)) #['py测试文件1.txt', 'test-1', 'test.txt']"""os.stat_result(st_mode=16895, st_ino=472877960873943404, st_dev=3763895111, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1700616892, st_mtime=1700616740, st_ctime=1700550223)"""print(os.stat(self.path))"""os.stat_result(st_mode=33206, st_ino=2041538006082415215, st_dev=3763895111, st_nlink=1, st_uid=0, st_gid=0, st_size=156, st_atime=1700616740, st_mtime=1700544434, st_ctime=1700616740)"""print(os.stat(self.file_name))data = os.walk(self.path)  # 遍历path目录"""root:C:\Users\wwy\Desktop\testC:\Users\wwy\Desktop\test\test-1C:\Users\wwy\Desktop\test\py测试文件1.txtC:\Users\wwy\Desktop\test\test.txtroot:C:\Users\wwy\Desktop\test\test-1C:\Users\wwy\Desktop\test\test-1\test-1.txt"""for root, dirs, files in data:  # 递归遍历及输出print("root:%s" % root)for dir in dirs:print(os.path.join(root, dir))for file in files:print(os.path.join(root, file))oldPath = self.pathn1Path = oldPath+"\\test_n1"#os.mkdir(n1Path)  #新建单个目录,若目录路径中父目录不存在,则创建失败,没目录,抛异常os.makedirs(n1Path) #新建多个目录,若目录路径中父目录不存在,则自动创建os.listdir(self.path)os.rename(n1Path, oldPath+"\\test_n2") #重命名目录或文件,可修改文件或目录的路径(即移动操作),若目标文件目录不存在,则报错。# os.renames(oldPath+"\\test_t1",oldPath+"\\test_t2") #不存在的文件夹重新命名,异常def query(self):f = os.open(self.file_name, os.O_RDWR | os.O_CREAT)  # 打开文件,若文件不存在,则创建str_bytes = os.read(f, 100)  # 读100字节str = bytes.decode(str_bytes,encoding='utf-8',errors='ignore')  # 字节转字符串print(str)os.close(f)def remove(self):os.remove(self.file_name) #不能删除文件目录def pathOs(self):dir = os.path.isdir(self.file_name) #Falsefil = os.path.isfile(self.file_name) #Truereturn os.path.abspath(self.file_name)"""批量修改文件名"""def batch_rename(self):itemlist = os.listdir(self.path)# 获取目录文件列表for item in itemlist:# 连接成完整路径item_path = os.path.join(self.path, item)print(item_path)# 修改文件名if os.path.isfile(item_path):splitext = os.path.splitext(item_path)os.rename(item_path, splitext[0] + "-ww" + splitext[1])"""遍历目录及子目录下所有指定扩展名的文件"""def walk_ext_file(self, ext_list):# @dir_path参数:遍历的目录# @ext_list参数:拓展名列表,例['.mp4', '.mkv', '.flv']# 遍历for root, dirs, files in os.walk(self.path):# 获取文件名称及路径for file in files:file_path = os.path.join(root, file)file_item = os.path.splitext(file_path)# 输出指定扩展名的文件路径if file_item[1] in ext_list:print(file_path)"""按修改时间排序指定目录下的文件"""def sort_file_accord_to_time(self):# 排序前itemlist = os.listdir(self.path)print(itemlist)  #['py测试文件1-ww.txt', 'test-1', 'test-ww.txt', 'test_n2']# 正向排序itemlist.sort(key=lambda filename: os.path.getmtime(os.path.join(self.path, filename)))print(itemlist)  #['py测试文件1-ww.txt', 'test-ww.txt', 'test-1', 'test_n2']# 反向排序itemlist.sort(key=lambda filename: os.path.getmtime(os.path.join(self.path, filename)), reverse=True)print(itemlist)   #['test_n2', 'test-1', 'py测试文件1-ww.txt', 'test-ww.txt']# 获取最新修改的文件print(itemlist[0])  #test_n2#继承
class OSFileV2(OSFile):file_size = 0def __init__(self, path, file_name,file_size):  # init方法只能有一个OSFile.__init__(self,path,file_name)self.path = pathself.file_name = file_nameself.file_size = file_size#方法重写def remove(self):passdef main():path ="C:\\Users\\wwy\\Desktop\\test"file_name = "C:\\Users\\wwy\\Desktop\\test\\py测试文件1.txt"os_file = OSFile(path=path,file_name=file_name)#  os_file.basic_way()#   os_file.query()#   os_file.pathOs()#   os_file.batch_rename()ext_list = ['.mp4', '.mkv', '.flv']os_file.walk_ext_file(ext_list)os_file.sort_file_accord_to_time()if __name__ == '__main__':main()

测试结果
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

87基于matlab的双卡尔曼滤波算法

基于matlab的双卡尔曼滤波算法。第一步使用了卡尔曼滤波算法,用电池电压来修正SOC,然后将修正后的SOC作为第二个卡尔曼滤波算法的输入,对安时积分法得到的SOC进行修正,最终得到双卡尔曼滤波算法SOC估计值。结合EKF算法和安时积分法…

kafka开发环境搭建

文章目录 1 安装java环境1.1 下载linux下的安装包1.2 解压缩安装包1.3 解压后的文件移到/usr/lib目录下1.4 配置java环境变量 2 kafka的安装部署2.1 下载安装kafka2.2 配置和启动zookeeper2.3 启动和停止kafka 1 安装java环境 1.1 下载linux下的安装包 (1&#xf…

Couchdb 权限绕过漏洞复现(CVE-2017-12635)

Couchdb 权限绕过漏洞复现(CVE-2017-12635) ​​ 开启环境给了三个端口号,不知道哪个是正常的,最后试出来52226端口正常。 登录URL:http://192.168.91.129/_utils/# 来到了登录页面 ​​ 用postman发送PUT方法的…

Go 语言学习:了解 const 关键字及常量声明

如果一个变量应该有一个固定的、不能改变的值,你可以使用const关键字。 const关键字将变量声明为"常量",这意味着它是不可改变和只读的。 语法 const CONSTNAME type value 声明常量 声明常量的示例: package main import (…

计算机组成原理——存储器(主存容量扩展)

对于字扩展与位扩展的解释: 计算机原理中的字,位扩展,都给老子进来学,看不懂算我输! 如果主存的容量无法满足 CPU 的需求,可以通过存储器扩展来解决,扩展的方式有两种: 主存的位数…

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载 附:中文编程工具构件工具箱总共22组305个构件,构件明细如下:文本件16个: (普通标签,连接标签,闪动标签,立…

MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】

1、rvctools下载安装 rvctools下载地址:rvctools下载 截图如下,点击红色箭头指示的“Download Shared Folder” 即可下载 下载之后进行解压,解压到D:\MATLAB\toolbox这个工具箱目录,这个安装路径根据自己的情况来选择&#xff0c…

element 的 Notification 通知,自定义内容

通知事件: // 商户后台通知 MerchantBackgroundNotice() {// 禁止消息通知弹出多条if(this.notifyInstance) {this.notifyInstance.close();}const h this.$createElement; // 创建文本节点this.notifyInstance this.$notify({showClose: false, // 禁止关闭按钮…

Flink CDC -Sqlserver to Sqlserver java 模版编写

1.基本环境 <flink.version>1.17.0</flink.version> 2. 类文件 package com.flink.tablesql;import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.flink.streaming.api.environment.StreamExecutionEnviro…

【从删库到跑路 | MySQL总结篇】表的增删查改(进阶上)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、数据…

【C语言】【选择排序及其优化】

选择排序是指&#xff1a;第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后再从剩余的未排序元素中寻找到最小&#xff08;大&#xff09;元素&#xff0c;然后放到已排序的序列的末尾&#xff0…

论文阅读:“Appearance Capture and Modeling of Human Teeth”

文章目录 AbstractIntroductionMethod OverviewTeeth Appearance ModelEnamelDentinGingiva and oral cavity Data AcquisitionImage captureGeometry capture ResultsReferences Abstract 如果要为电影&#xff0c;游戏或其他类型的项目创建在虚拟环境中显示的人类角色&#…