python总结高阶-文件

文章目录

  • 文件操作
  • 文本文件和二进制文件
    • 1 文本文件
    • 2 二进制文件
  • 文件操作相关模块
  • 创建文件对象open()
  • 文本文件的写入
    • 基本的文件写入操作
    • 常用编码介绍
    • write()/writelines()写入数据
    • close()关闭文件流
    • with语句(上下文管理器)
  • 文本文件的读取
    • read([size])
    • readline()
    • readlines()
  • 二进制文件的读取和写入
  • 文件对象的常用属性和方法
  • 文件任意位置操作
  • 使用pickle序列化 (很重要)
    • 【操作】将对象序列化到文件中
    • 【操作】将获得的数据反序列化成对象
  • CSV文件的操作
    • csv.reader对象和csv文件读取
    • csv.writer对象和csv文件写入
  • os和os.path模块
    • os模块-调用操作系统命令
    • os.startfile :直接调用可执行文件
    • os模块-文件和目录操作
    • os 模块下常用操作文件的方法
    • os 模块下关于目录操作的相关方法,汇总如下:
    • os.path模块
    • walk()递归遍历所有文件和目录
  • 递归遍历目录下所有文件

文件操作

在这里插入图片描述

文本文件和二进制文件

按文件中数据组织形式,我们把文件分为文本文件和二进制文件两
大类。

1 文本文件

文本文件存储的是普通“字符”文本,python默认为 unicode 字符集
(两个字节表示一个字符,最多可以表示:65536个),可以使
用记事本程序打开。

2 二进制文件

二进制文件把数据内容用“字节”进行存储,无法用记事本打开。必
须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文
件、JPG图片、doc文档等等。

文件操作相关模块

在这里插入图片描述

创建文件对象open()

open() 函数用于创建文件对象,基本语法格式如下:
open(文件名[,打开方式])
如果只是文件名,代表在当前目录下的文件。文件名可以录入全路
径,比如: D:\a\b.txt
为了减少 \ 的输入,可以使用原始字符串: r“d:\b.txt” 示例如下:
f = open(r"d:\b.txt",“w”)
打开方式有如下几种:
在这里插入图片描述

文本文件的写入

基本的文件写入操作

文本文件的写入一般就是三个步骤:
1 创建文件对象
2 写入数据
3 关闭文件对象

f = open(r"a.txt","a")
s = "itbaizhan\nsxt\n"
f.write(s)
f.close()
with open(r"a.txt","a") as f:s = "itbaizhan\nsxt\n"f.write(s)

常用编码介绍

在操作文本文件时,经常会操作中文,这时候就经常会碰到乱码问
题。为了让大家有能力解决中文乱码问题,这里简单介绍一下各种
编码之间的关系。
常用编码之间的关系如下:

在这里插入图片描述

#测试写入中文
2 f = open(r"b.txt","w",encoding="utf-8")
3 f.write("尚学堂\n百战程序员\n")
4 f.close()

write()/writelines()写入数据

write(a) :把字符串 a 写入到文件中
writelines(b) :把字符串列表写入文件中,不添加换行符

f = open(r"d:\bb.txt","w",encoding="utf-8")
s = ["高淇\n","高老三\n","高老四\n"]
f.writelines(s)
f.close()

在这里插入图片描述

close()关闭文件流

在这里插入图片描述
由于文件底层是由操作系统控制,所以我们打开的文件对象必须显
式调用 close() 方法关闭文件对象。当调用 close() 方法时,首先会把缓冲
区数据写入文件(也可以直接调用 flush() 方法),再关闭文件,释放文
件对象

with语句(上下文管理器)

with关键字 (上下文管理器)可以自动管理上下文资源,不论什么原因
跳出 with块 ,都能确保文件正确的关闭,并且可以在代码块执行完毕
后自动还原进入该代码块时的现场。

s = ["高淇\n","高老三\n","高老五\n"]
with  open(r"d:\bb.txt","w") as f:f.writelines(s)

文本文件的读取

文件的读取一般使用如下三个方法:

read([size])

从文件中读取 size 个字符,并作为结果返回。如果没有 size 参
数,则读取整个文件。
读取到文件末尾,会返回空字符串。

readline()

读取一行内容作为结果返回。读取到文件末尾,会返回空字符串

readlines()

文本文件中,每一行作为一个字符串存入列表中,返回该列表

二进制文件的读取和写入

二进制文件的处理流程和文本文件流程一致。首先还是要创建文件
对象,不过,我们需要指定二进制模式,从而创建出二进制文件对
象。例如:

f = open(r"d:\a.txt", 'wb') #可写的、重写模式的二进制文件对象
f = open(r"d:\a.txt", 'ab') #可写的、追加模式的二进制文件对象
f = open(r"d:\a.txt", 'rb') #可读的二进制文件对象

创建好二进制文件对象后,仍然可以使用 write() 、 read() 实现文件的读
写操作

文件对象的常用属性和方法

文件对象封装了文件相关的操作。在前面我们学习了通过文件对象
对文件进行读写操作。本节我们详细列出文件对象的常用属性和方
法,并进行说明。
文件对象的属性
在这里插入图片描述
文件对象的打开模式
在这里插入图片描述
文件对象的常用方法
在这里插入图片描述

文件任意位置操作

#e.txt的内容是:abcefghljklmn
with open("e.txt","r",encoding="utf-8") as f:print("文件名是:{0}".format(f.name))  #文件名是:e.txtprint(f.tell())                      #0print("读取的内容:{0}".format(str(f.readline()))) #读取的内容:abcdefghijklmnprint(f.tell())                      #14f.seek(3,0)print("读取的内容:{0}".format(str(f.readline()))) #读取的内容:defghijklmn

使用pickle序列化 (很重要)

我是编程ID

序列化使用:

pickle.dump(obj, file) obj 就是要被序列化的对象, file 指的是存储的文件
pickle.load(file)从 file 读取数据,反序列化成对象

【操作】将对象序列化到文件中

import picklewith  open("data.dat","wb") as f:name = "高淇"age = 34score = [90,80,70]resume ={'name':name,'age':age,'score':score}pickle.dump(resume,f)

【操作】将获得的数据反序列化成对象

import pickle
with  open("data.dat","rb") as f:resume = pickle.load(f)print(resume)

CSV文件的操作

csv是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库
数据的导入和导出。
在这里插入图片描述

csv.reader对象和csv文件读取


import csv
with  open(r"d:\a.csv") as a:a_csv = csv.reader(a)        #创建csv对象,它是一个包含所有数据的列表,每一行为一个元素headers = next(a_csv)        #获得列表对象,包含标题行的信息print(headers)for row in a_csv:           #循环打印各行内容print(row)

[‘姓名’, ‘年龄’, ‘工作’, ‘薪水’]
[‘高淇’, ‘18’, ‘程序员’, ‘50000’]
[‘高老三’, ‘19’, ‘测试工程师’, ‘20000’]
[‘高老五’, ‘20’, ‘人工智能开发’, ‘50000’]

csv.writer对象和csv文件写入

import csv
headers = ["工号","姓名","年龄","地址","月薪"]
rows = [("1001","高淇",18,"西三旗1号院","50000"),("1002","高八",19,"西三旗1号
院","30000")]
with  open(r"d:\b.csv","w") as b:b_csv = csv.writer(b)        #创建csv对象b_csv.writerow(headers)      #写入一行(标题)b_csv.writerows(rows)        #写入多行(数据)

os和os.path模块

os模块-调用操作系统命令

os.system 可以帮助我们直接调用系统的命令

import os
os.system("notepad.exe")
os.system("ping www.baidu.com")

os.startfile :直接调用可执行文件

import osos.startfile(r"C:\Program Files(x86)\Tencent\WeChat\WeChat.exe")

os模块-文件和目录操作

我们可以通过前面讲的文件对象实现对于文件内容的读写操作。如
果,还需要对文件和目录做其他操作,可以使用 os 和 os.path 模块。

os 模块下常用操作文件的方法

在这里插入图片描述

os 模块下关于目录操作的相关方法,汇总如下:

在这里插入图片描述

os.path模块

在这里插入图片描述

walk()递归遍历所有文件和目录

os.walk() 方法是一个简单易用的文件、目录遍历器,可以帮助我们高
效的处理文件、目录方面的事情。格式如下:
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
其中, top :是要遍历的目录。 topdown :可选, True ,先遍历 top 目录
再遍历子目录。
返回三元组( root 、 dirs 、 files ):
root :当前正在遍历的文件夹本身
dirs :一个列表,该文件夹中所有的目录的名字
files :一个列表,该文件夹中所有的文件的名

递归遍历目录下所有文件

import os
import os.path#递归遍历目录树def my_print_file(path,level):child_files = os.listdir(path)for file in child_files:file_path = os.path.join(path,file)print("\t"*level+file_path[file_path.rfind(os.sep)+1:])if os.path.isdir(file_path):my_print_file(file_path,level+1)my_print_file("电影",0)

在这里插入图片描述

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

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

相关文章

数据结构之二叉树

树的简介: 再来看看二叉树的简介: 容易想到p叉树就是每个节点最多有p个子节点的树。 接下来看两种特殊的二叉树: 接下来我们思考两个问题: 1.深度为h的满二叉树一共有多少个节点? 对于这一个问题,我们观…

BDD - Python Behave 用户自定义命令行选项 -D

BDD - Python Behave 用户自定义命令行选项 -D 引言behave -Dbehave -D 应用feature 文件behave.ini 配置文件step 文件执行 引言 日常运行测试用例,有时需要自定义命令行参数,比如不同环境的对应的配置是不一样的,这样就需要传一个环境参数…

2023版本QT学习记录 -11- 多线程的使用(QT的方式)

———————多线程的使用(QT方式)——————— 🎄效果演示 两个线程都输出一些调试信息 🎄创建多线程的流程 🎄头文件 #include "qthread.h"🎄利用多态重写任务函数 class rlthread1 : public QThread {Q_OBJE…

C++程序设计兼谈对象模型(侯捷)笔记

C程序设计兼谈对象模型(侯捷) 这是C面向对象程序设计的续集笔记,仅供个人学习使用。如有侵权,请联系删除。 主要内容:涉及到模板中的类模板、函数模板、成员模板以及模板模板参数,后面包含对象模型中虚函数调用&…

【计算机毕业设计】SSM企业OA管理系统

项目介绍 本项目包含管理员与普通员工两种角色, 管理员角色包含以下功能: 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,工资查询,职称管理,统计图表,工资项管理,管理员登录等功能。 员工角色包含以下功能: 个人信息管理,工资详情…

基于PHP的花店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的花店管理系统 一 介绍 此花店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈:phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 …

[蓝桥 2023 ]三带一

问题描述 小蓝和小桥玩斗地主,小蓝只剩四张牌了,他想知道是否是“三带一”牌型。 所谓“三带一”牌型,即四张手牌中,有三张牌一样,另外一张不与其他牌相同,换种说法,四张手牌经过重新排列后&am…

使用jmeter从0开始完成性能测试

使用JMeter从0开始完成性能测试 介绍 在软件开发过程中,性能测试是一项关键任务,它可以帮助我们评估系统在不同负载条件下的性能表现,发现潜在的性能瓶颈。JMeter是一款功能强大且易于使用的性能测试工具,它可以帮助我们完成各种…

网络故障排查和流量分析利器-Tcpdump命令

Tcpdump是一个在Unix/Linux系统上广泛使用的命令行网络抓包工具。它能够捕获经过网络接口的数据包,并将其以可读的格式输出到终端或文件中。Tcpdump是一个强大的命令行工具,能够捕获和分析网络数据包,为网络管理员和安全专业人员提供了深入了…

手写视频裁剪框

<!-- 截取框 --><divv-show"isShow"class"crop-box":style"{width: cropWidth px,height: cropHeight px,left: cropX px,top: cropY px,}"ref"cropBox"mousedown"startInteraction"><!-- 内容在这里 --…

mysql 单表 操作 最大条数验证 以及优化

1、背景 开车的多年老司机&#xff0c;是不是经常听到过&#xff0c;“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”&#xff0c;“你这个表数据都马上要到 2000w 了&#xff0c;难怪查询速度慢”。 2、实验 实验一把看看… 建一张表 CREATE TABL…

Java BIO、NIO、AIO、Netty知识详解(值得珍藏)

1. 什么是IO Java中I/O是以流为基础进行数据的输入输出的&#xff0c;所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。 在Java类库中&#xff0c;IO部分的内容是很庞大的&#xff0c;因为它涉及的领…

[Ray Tracing: The Rest of Your Life] 笔记

前言 开年第一篇博客~ 整理了三四个小时才整理完orz。 这一部分是光线追踪三部曲的最后一部&#xff0c;主要介绍了蒙特卡洛积分、重要性采样等内容。场景上没有什么大的改变&#xff0c;基本上就是在Cornell Box中渲染的&#xff0c;本篇主要在加速收敛&#xff0c;提升渲染效…

Docker 安装Mysql

目录 Docker Mysql安装 ✨安装和配置mysql ✨远程连接mysql远程连接 MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据&#xff0c;MySQL 是第二受欢迎的数据库&#xff0c;仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好&#xff0c;已经成…

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测

分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测 目录 分类预测 | Python实现基于SVM-RFE-LSTM的特征选择算法结合LSTM神经网络的多输入单输出分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 基于SVM-RFE-LSTM的特征…

bootstrap5实现宠物商店网站 Cat-Master

一、需求分析 宠物商店网站是指专门为宠物商店或宠物用品商家而建立的在线平台。这种网站的功能通常旨在提供以下服务&#xff1a; 产品展示&#xff1a;宠物商店网站通常会展示宠物食品、玩具、床上用品、健康护理产品等各种宠物用品的图片和详细信息。这样&#xff0c;潜在的…

MybatisPlus—快速入门

目录 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 1.2 定义Mapper 2.MybatisPlus常用注解 2.1 TableName 2.2 TableId 2.3 TableField 2.4 小结 3. 常用配置 4. 总结 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 MyBatisPlus官方提…

安徽省暨合肥市“希望工程·梦想计划”小盖茨机器人捐赠启动仪式举行

1月5日&#xff0c;安徽省暨合肥市“希望工程梦想计划”小盖茨机器人捐赠启动仪式在合肥市一六八玫瑰园学校东校区举行。共青团安徽省委副书记叶征&#xff0c;北京儒布特教育科技有限公司董事牛俊明&#xff0c;北京儒布特教育科技有限公司市场总监高进&#xff0c;安徽省青基…

基于JavaWeb+SSM+Vue四六级词汇微信小程序系统的设计和实现

基于JavaWebSSMVue四六级词汇微信小程序系统的设计和实现 源码获取入口KaiTi 报告Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 KaiTi 报告 &#xff08;1&#xff09;课题背景 伴随着社会的快速发展, 现代社…