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.txt
    print(f.tell())                      #0
    print("读取的内容:{0}".format(str(f.readline()))) #读取的内容:abcdefghijklmn
    print(f.tell())                      #14
    f.seek(3,0)
    print("读取的内容:{0}".format(str(f.readline()))) #读取的内容:defghijklmn

使用pickle序列化 (很重要)

我是编程ID

序列化使用:

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

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

import pickle
 with  open("data.dat","wb") as f:
    name = "高淇"
    age = 34
    score = [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 os
 os.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)

在这里插入图片描述

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

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

相关文章

用友U8 Cloud smartweb2.RPC.d XXE漏洞复现

0x01 产品简介 用友U8 Cloud 提供企业级云ERP整体解决方案,全面支持多组织业务协同,实现企业互联网资源连接。 U8 Cloud 亦是亚太地区成长型企业最广泛采用的云解决方案。 0x02 漏洞概述 用友U8 Cloud smartweb2.RPC.d接口处存在 XXE漏洞,攻击者可通过该漏洞获取敏感文件…

Typora 编辑器 讲解 包括使用方式 快捷键 附带下载地址 (免费破解)

CSDN 成就一亿技术人! 今天来讲一下很好用的编辑器 Typora CSDN 成就一亿技术人! 什么是Typora? 它是一个 Markdown 编辑器和阅读器,这意味着您可以使用简单的格式代码 (Markdown)是一种轻量级标记语言&…

安科瑞汽车充电桩在西北地区的应用——安科瑞 顾烊宇

摘要:“十四五”是经济发展追赶超越的关键时期,将进一步促进电动汽车及充电市场的繁荣发展。目前我国正处于转型发展的关键时期,在“新基建”的推动下,新能源汽车充电桩的建设将迎来发展机遇。本文首先通过统计、分析西部城市某辖…

bat批处理文件_bat注释汇总

文章目录 1、示例(直接结合脚本和结果进行理解) 1、示例(直接结合脚本和结果进行理解) %这是一个注释% %这是另一个注释%rem 这是一个注释 rem 这是另一个注释:这是一个注释 ::这是一个注释 :?这是另一个注释if 1 1 ( %这里会执…

VMware 安装 macOS虚拟机(附工具包)

VMware 安装 macOS虚拟机,在Windows上体验苹果macOS系统! 安装教程:VMware 安装 macOS虚拟机VMware Workstation Pro 是一款强大的虚拟机软件,可让您在 Windows 电脑上运行 macOS 系统。只需简单几步操作,即可轻松安装…

大型语言模型的幻觉问题

1.什么是大模型幻觉? 在语言模型的背景下,幻觉指的是一本正经的胡说八道:看似流畅自然的表述,实则不符合事实或者是错误的。 幻觉现象的存在严重影响LLM应用的可靠性,本文将探讨大型语言模型(LLMs)的幻觉问题&#x…

Mybatis-Plus乐观锁配置使用流程【OptimisticLockerInnerInterceptor】

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家:人工智能学习网站 1.乐观锁实现 1.配置插件 1.XML方式 <bean class"com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerI…

CRM如何精确控制RT设备和与UMD通信笔记

1 CRM工作职责 监控link req是否得到schedule监控link上各个device的req是否ready监控SOF或EOF的trigger信号&#xff0c;决定各个设备配置哪个req 2 CRM如何精确控制RT设备 分两步&#xff0c;一是crm知道某帧req的link dev准备好了&#xff0c;可以做apply setting。 二是…

获取小红书笔记详情API调用说明(含请求示例参数说明)

前言 小红书&#xff0c;是一个引领全球时尚潮流的社交电商平台。在这里&#xff0c;你可以发现世界各地的优质好物&#xff0c;从美妆护肤、穿搭时尚&#xff0c;到家居生活、旅行美食&#xff0c;一切应有尽有。同时&#xff0c;这里也是一个分享生活点滴的平台&#xff0c;…

YOLOv5+混合注意力机制再涨4.3%,Transformer混合设计依旧可以卷

在工业生产过程中&#xff0c;由于低效率、不统一的评估、高成本以及缺乏实时数据&#xff0c;传统的手动检测焊接缺陷不再被应用。 为了解决表面贴装技术中焊接缺陷检测的低准确率、高误检率和计算成本问题&#xff0c;提出了一种新方法。该方法是一种专门针对焊接缺陷检测算法…

集团企业OA办公协同平台建设方案

一、企业对协同应用的需求分析 实现OA最核心、最基础的应用 业务流转&#xff1a;收/发文、汇报、合同等各种审批事项的业务协作与办理 信息共享&#xff1a;规章制度、业务资料、共享信息资源集中存储、统一管理 沟通管理&#xff1a;电子邮件、手机短信、通讯录、会议协作等…

es集群安装及优化

es主节点 192.168.23.100 es节点 192.168.23.101 192.168.23.102 1.安装主节点 1.去官网下载es的yum包 官网下载地址 https://www.elastic.co/cn/downloads/elasticsearch 根据自己的需要下载对应的包 2.下载好之后把所有的包都传到从节点上&#xff0c;安装 [rootlocalho…

【DevOps-07-3】Jenkins集成Sonarqube

一、简要说明 Jenkins安装Sonarqube插件Jenkins安装和配置Sonar-Scanner信息Jenkins打包项目中,增加Sonar-Scanner代码质量扫描二、Jenkins安装Sonarqube插件 1、登录Jenkins管理后台,搜索安装Sonar-Scanner插件 Jenkins管理后台示例:http://192.168.95.131:8080/jenkins/

JetCache源码解析——配置加载

JetCache自动化配置加载 JetCache的配置加载主要是在jetcache-autoconfigure模块中完成的&#xff0c;无论是使用内存缓存LinkedHashMap和caffeine&#xff0c;亦或是通过lettuce、redisson和spring-data-redis来操作Redis服务缓存数据&#xff0c;其自动加载配置的操作基本上…

SpringCloud-高级篇(十一)

&#xff08;1&#xff09;搭建Redis-主从架构 前面我们实现了Redis的持久化&#xff0c;解决了数据安全问题&#xff0c;但是还有需要解决的问题&#xff0c;下面学习Redis的主从集群&#xff0c;解决Redis的并发能力的问题 Redis的集群往往是主从集群&#xff0c;Redsi为什么…

手势识别+人脸识别+姿态估计(关键点检测+教程+代码)

手势识别和手势关键点检测是计算机视觉领域中的一个重要研究方向,涉及到从图像或视频中检测人手的位置和姿态信息,并推断出手势的意义。以下是一些可能用到的方法和技术: 手势识别 基于深度学习的手势识别 基于深度学习的手势识别是目前最流行的方法之一。它通常使用卷积神…

虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化

导读&#xff1a;在数字化工厂和智能制造的时代&#xff0c;数据已经成为优化机器和流程的关键。然而&#xff0c;如何高效地收集和处理这些数据&#xff0c;特别是在开发、部署和生产阶段&#xff0c;仍是企业面临的一大挑战。虹科TigoLeap平台&#xff0c;作为一款引领行业变…

啊哈c语言——逻辑挑战9:水仙花数

有一种三位数特别奇怪&#xff0c;这种数的“个位数的立方”加上“十位数的 立方”再加上“百位数的立方”恰好等于这个数。例如&#xff1a; 153111555333&#xff0c;我们为这种特殊的三位数起了一个很好听的名字——“水仙花数”&#xff0c;那么请你找出所有的“水仙花数”…

MIT_线性代数笔记:第 22 讲 对角化和矩阵的幂

目录 对角化矩阵 Diagonalizing a matrix S−1AS Λ矩阵的幂 Powers of A重特征值 Repeated eigenvalues差分方程 Difference equations u k 1 u_{k1} uk1​A u k u_k uk​斐波那契数列 Fibonacci sequence 本讲中将学习如何对角化含有 n 个线性无关特征向量的矩阵&#xff…

centos用yum安装mysql详细教程

1 查询安装mysql的yum源,命令如下 ls /etc/yum.repos.d/ -l 界面如下图所示&#xff0c;未显示mysql的安装源 2 安装mysql相关的yum源,例如&#xff1a; 例如&#xff1a;rpm -ivh mysql57-community-release-el7.rpm 要注意 mysql的版本和系统的版本匹配 mysql57-communi…