Python-13(永久存储)

article/2025/8/4 5:47:32

创建并打开文件

open(file,mode)函数

该函数用于打开一个文件并返回对应的文件对象。

file参数指定的是文件路径和文件名,如果没有添加路径,那么默认将文件创建在python的主文件夹里面。mode参数指定的是打开的模式,r表示读取(默认)、w表示写入、x表示排他性创建文件(如果文件已存在则打开失败)、a表示在文件末尾追加内容、+表示更新文件(读取和写入)。

open("file.txt","w")

 

注意:如果已经是一个文件对象,那么可以直接调用open方法,不需要传递第一个参数。

from pathlib import Path
p = Path.cwd()/"file.txt"
f = p.open("w")
f.write("hello")
f.close()

 

write()方法

该方法将字符串写入对象文件中,并返回写入的字符数量(字符串长度)。

f = open("file.txt","w")
print(f.write("I LOVE Python"))

writelines()方法

将多个字符串写入到文件对象中,不会自动添加换行符,所以通常是人为的加在每个字符串的末尾。此方法没有返回值。

f = open("file.txt","w")
f.writelines(["I love you\n","You love me\n"])

close()方法

该方法用于关闭文件对象,当文件对象关闭之后才能将之前传入的字符串写入文件。

readable()方法

该方法用于判断文件对象是否支持读取。支持则返回True,否则返回False。

writeable()方法

该方法用于判断文件对象是否支持写入。支持则返回True,否则返回False。

f = open("file.txt","r+")
print(f.readable())
print(f.writable())

for读取

python的文件是支持迭代的,我们可以将文件放到for语句里面实现读取。

f = open("file.txt","r+")
for each in f:print(each)

read()方法

文件对象里面有个指针,被称之为文件指针,它负责指向文件的当前位置,当用户读取一个字符时,文件指针就会指向下一个字符,直到文件的末尾EOF。

f = open("file.txt","r+")
print(f.read())

tell()方法

该方法用于返回当前文件指针在文件对象中的位置。

f = open("file.txt","r+")
print(f.read())
print(f.tell())

seek(offset,whence)方法

修改文件指针的位置,从whence参数指定的位置(0代表文件的起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节,返回值是新的索引位置。

readline(size=-1)方法

从文件对象中读取指定数量的字符(或遇到EOF停止);当未指定该参数,或参数为负值的时候,读取剩余的所有字符。

flush()方法

将文件对象中的缓存数据写入到文件中(未必有效)。

truncate(pos=None)方法

将文件对象截取到pos的位置,默认是截取到文件指针当前指定的位置。pos之后的文件内容会被清除。

注意:如果将文件模式改为w,但是没有写入任何内容就直接关闭文件对象,那么文件的所有内容都会消失。

f = open("file.txt","w")
f.close()

路径处理

pathlib--面向对象的文件系统路径

from pathlib import Path:从pathlib模块中单独导入path,使用这种导入方式,在后面调用模块时就不需要加上模块名了。

cwd()方法

获取当前目录的路径。

from pathlib import Path
print(Path.cwd())

is_dir()方法

判断一个路径是否为一个文件夹。

from pathlib import Path
p = Path.cwd()
q = p/"file.txt"
print(p.is_dir())
print(q.is_dir())

is_file()方法

判断一个路径是否为一个文件。

from pathlib import Path
p = Path.cwd()
q = p/"file.txt"
print(p.is_file())
print(q.is_file())

exists()方法

检测一个路径是否存在。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.exists())
print(q.exists())

name属性

获取路径的最后一个部分。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.name)
print(q.name)

 

stem属性

获取文件名。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.stem)
print(q.stem)

 

suffix属性

用于获取文件的后缀。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.suffix)
print(q.suffix)

 

parent属性

获取其父级目录。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.parent)
print(q.parent)

parents属性

获取其逻辑祖先构成的一个不可变序列(可迭代对象)。其支持索引,0是父级目录,1是0的父级目录。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
ps = p.parents
for each in ps:print(each)
print(ps[0])
print(ps[1])

parts属性

将路径的各个组件拆分成元组。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.parts)

stat()方法

查询文件或文件夹的信息。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
print(p.stat())

修改路径

mkdir()方法

创建文件夹。如果想要创建的文件夹已经存在会报错。

from pathlib import Path
p = Path.cwd()/"hello"
p.mkdir()
p.mkdir()

如果不想进行提示,那么我们可以将exist_ok参数设置为True。

注意:如果路径中存在多个不存在的父级目录,也会报错。可以通过设置parents参数为True,创建不存在的多级目录。 

修改文件

rename()方法

修改文件名。

from pathlib import Path
p = Path.cwd()/"file.txt"
p.rename("NewFile.txt")

 

replace()方法

替换指定的文件或者文件夹。

删除文件夹或文件

rmdir()方法

用于删除文件夹。但目录不为空不会随意删除,需要显示有unlink将文件夹里面的文件删除。

unlink()方法

用于删除文件。

查找文件

glob()方法

from pathlib import Path
n = Path('.')
print(list(n.glob("*.txt")))

 

 绝对路径和相对路径

绝对路径

是文件真正存在的路径。从根目录开始一级一级的指向最终的文件或者文件夹。

相对路径

以当前目录为基准,进行一级一级的目录推导的路径。使用.(点)来表示当前所在的目录,使用两个紧挨着的.(点)来表示上一级目录。

resolve()方法

该方法可以将相对路径转换为绝对路径。

from pathlib import Path
print(Path("./file.txt"))
print(Path("./file.txt").resolve())

iterdir()方法

获取当前路径下所有子文件和子文件夹的对象。

from pathlib import Path
p = Path.cwd()
q = p/"hello.txt"
for each in p.iterdir():print(each)

with语句和上下文管理器

from pathlib import Path
with open("file.txt") as f:f.write("I love you")"""
相当于
f = open("file.txt","w")
f.write("I love you")
"""

使用上下文管理器就是上文打开文件,下文关闭文件。使用上下文管理器就不需要手动的关闭文件,文件处理的代码只需要放在with语句的缩进中。使用上下文管理器的最大优势就是能够确保资源的施放。

pickle        

解决的是永久存储Python对象的问题,允许将字符串、列表、字典这些python对象保存为文件的形式。将python对象序列化就是将python对象转换为二进制字节流的过程。

dump()方法

将数据传入pickle文件中。

import pickle
x,y,z=1,2,3
s = "py"
l = ["hello",520,1314]
d = {"one":1,"two":2}
with open("data.pkl","wb") as f:#后缀必须是pkl,wb是以二进制形式打开,二进制可写入的形式pickle.dump(x,f)pickle.dump(y, f)pickle.dump(z, f)pickle.dump(s, f)pickle.dump(l, f)pickle.dump(d, f)

load()方法

将pickle文件中的二进制数据重新读取。

import picklewith open("data.pkl","rb") as f:#后缀必须是pkl,rb是以二进制形式打开,二进制可读入的形式x = pickle.load(f)y = pickle.load(f)z = pickle.load(f)s = pickle.load(f)l = pickle.load(f)d = pickle.load(f)
print(x,y,z,s,l,d,sep="\n")


http://www.hkcw.cn/article/IJMTonaMgf.shtml

相关文章

linux驱动开发(1)-内核模块

内核模块 模块最大的好处是可以动态扩展应用程序的功能而无须重新编译链接生成新的应用程序镜像,在微软的Windows系统上动态链接库DLL(Dynamic Link Library),Linux系统上的共享库so(shared object)文件的…

【ISP算法精粹】动手实战:用 Python 实现 Bayer 图像的黑电平校正

在数字成像领域,图像信号处理器(ISP)如同幕后英雄,默默将传感器捕获的原始数据转化为精美的图像。而黑电平校正,作为ISP预处理流程中的关键一环,直接影响着最终图像的质量。今天,我们就通过Pyth…

【数据结构】顺序表和链表详解(上)

前言:上期我们介绍了算法的复杂度,知道的算法的重要性同时也了解到了评判一个算法的好与坏就去看他的复杂度(主要看时间复杂度),这一期我们就从顺序表和链表开始讲起。 文章目录 一,顺序表1,线性表2,顺序表…

【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录

#工作记录 📌 安装背景 操作系统:MSYS2 MINGW64当前时间:2025年6月1日Python 版本:3.12(默认通过 pacman 安装)目标工具链: pipxnumpypipsetuptoolswheel 🛠️ 安装过程与结果记录…

sqli-labs靶场32-37关(宽字节注入)

目录 前言 less32(宽字节注入) less33(宽字节注入) less34(POST型宽字节注入) less35(数字型闭合宽字节) less36(宽字节注入) less37(POST…

SRE 基础知识:在站点可靠性工程中可以期待什么

作者:来自 Elastic Elastic Observability Team 在过去的 20 年里,大多数领先企业已经采用云计算和分布式系统来开发它们的应用程序。一个意想不到的后果是:传统的 IT 运维( IT operations - ITOps )常常难以应对日益增…

day16 leetcode-hot100-31(链表10)

25. K 个一组翻转链表 - 力扣(LeetCode) 1.模拟法 思路 将这个过程拆解为两个步骤,第一步将单分组的节点反转,第二步将反转后的链表加入原链表。 针对节点反转很容易,参考之前的206. 反转链表 - 力扣(Le…

黑马Java面试笔记之Redis篇(使用场景)

1.面试题 我看你做的项目中,都用到了redis,你在最近的项目中那些场景使用了redis呢 2.提问的底层逻辑 面试官提问你这个问题一是想验证你的项目场景的真实性,二是为了作为深入发问的切入点 3.延伸出来的知识点 3.1 缓存 缓存三兄弟&#x…

PyTorch -TensorBoard的使用 (一)

设置环境 新建python文件 .py 安装Tensorboard 在终端进行安装 显示安装成功 两个logs,出现这种情况怎么解决 所有的logs文件删掉delete,重新运行 add_image 不满足要求 Opencv-numpy 安装Opencv add_image 用法示例 (500,375&am…

解决Ubuntu20.04上Qt串口通信 QSerialPort 打开失败的问题

运行Qt串口通信 open(QIODevice::ReadWrite) 时,总是失败。 1、打印失败原因 QString QSerialHelper::openSerail() {if(this->open(QIODevice::ReadWrite) true){return this->portName();}else{return "打开失败";//return this->errorStri…

[yolov11改进系列]基于yolov11引入迭代注意力特征融合iAFF的python源码+训练源码

【iAFF介绍】 1. IAFF(迭代注意力特征融合) iAFF通过引入多尺度通道注意力模块和迭代融合,更好的整合不同尺度和语义不一致的特征,有效解决特征融合问题,提高目标检测的精度。 特征融合,即不同层或分支的…

springboot-响应接收与ioc容器控制反转、Di依赖注入

1.想将服务器中的数据返回给客户端,需要在controller类上加注解:ResponseBody; 这个注解其实在前面已经使用过,RestController其实就包含两个注解: Controller ResponseBody 返回值如果是实体对象/集合,将会转换为j…

idea中springboot2.7(由于步入另一个线程,已跳过 xxx 处的断点)

idea springboot2.7 debug 问题 springboot 2.7 debug 模式时引入 spring-boot-devtools 卡在代码中不往下执行&#xff0c;提示&#xff1a;由于步入另一个线程&#xff0c;已跳过 xxx 处的断点。 原因 springboot 2.7 引入 spring-boot-devtools <!-- debug时不推荐开…

ROS应用之如何配置RTOS满足机器人系统中的实时要求

如何配置RTOS以满足机器人系统中的实时要求 前言 实时操作系统&#xff08;RTOS&#xff09;在机器人系统中的应用至关重要&#xff0c;尤其在需要对环境变化做出快速反应的高精度控制系统中。ROS2作为开源机器人操作系统&#xff0c;为机器人提供了强大的框架和工具链&#x…

03 APP 自动化-定位元素工具元素定位

文章目录 一、Appium常用元素定位工具1、U IAutomator View Android SDK 自带的定位工具2、Appium Desktop Inspector3、Weditor安装&#xff1a;Weditor工具的使用 4、uiautodev通过定位工具获取app页面元素有哪些属性 二、app 元素定位方法 一、Appium常用元素定位工具 1、U…

数学分析——一致性(均匀性)和收敛

目录 1. 连续函数 1.1 连续函数的定义 1.2 连续函数的性质 1.2.1 性质一 1.2.2 性质二 1.2.3 性质三 1.2.4 性质四 2. 一致连续函数 2.1 一致连续函数的定义 2.2 一致连续性定理(小间距定理)(一致连续函数的另一种定义) 2.3 一致连续性判定法 2.4 连…

并发执行问题 (上)

S3和S4 没法区别 i存在 父进程数据区 子进程存在数据区 所以返回值不一样 通过返回值运行不一样的代码 原来的进程镜像作废,运行的执行新的elf文件

一周学会Pandas2之Python数据处理与分析-数据重塑与透视-pivot_table() - 透视表 (长 -> 宽,支持聚合)

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili pivot_table() 是 pandas 中最强大的数据透视工具&#xff0c;它不仅能重塑数据&#xff0c;还能进行复杂的数据聚合…

郑钦文抢七险胜萨姆索诺娃 首次闯进法网八强

6月1日,在2025年法国网球公开赛女单第四轮比赛中,赛会8号种子、中国选手郑钦文以2:1战胜俄罗斯选手萨姆索诺娃,首次闯进法网女单八强。这场比赛耗时2小时47分钟,双方在场上展开了激烈的争夺。首盘比赛双方陷入苦战,郑钦文通过更深的落点限制对手进攻,并且在多拍回合中展现…

robot_lab学习笔记【MDP综述】

文章目录 整体介绍第一部分第二部分第三部分总结 整体介绍 在robot_lab中的mdp文件夹下面包含6个文件&#xff1a;[init.py , commands.py , curiculums.py, events.py , observations.py , rewards.py ] 对每个部分的详细讲解在总结中会指向子链接 init.py文件的代码如下 …