当前位置: 首页 > article >正文

Python-13(永久存储)

创建并打开文件

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")

相关文章:

Python-13(永久存储)

创建并打开文件 open(file,mode)函数 该函数用于打开一个文件并返回对应的文件对象。 file参数指定的是文件路径和文件名,如果没有添加路径,那么默认将文件创建在python的主文件夹里面。mode参数指定的是打开的模式,r表示读取(…...

《关于有序推动绿电直连发展有关事项的通知》核心内容

《关于有序推动绿电直连发展有关事项的通知》(发改能源〔2025〕650 号)由国家发展改革委和国家能源局于 2025 年 5 月 21 日联合印发,旨在明确绿电直连项目的适用范围、规划引导、运行管理、交易与价格机制以及组织保障等内容。 适用范围与原…...

数据结构-排序(1)

一,排序的基本概念 1.排序的定义 核心概念: 给定一个包含 n 个元素的序列 (R1, R2, ..., Rn) 和一个关键码 Ki(通常是记录 Ri 的一个属性),排序的目标是找到一个排列 (p1, p2, ..., pn),使得关键码序列 (K…...

记录一次session安装应用recyclerview更新数据的bug

首先抛出异常日志,在 先说结论:因为session安装监听是在点击事件里面,所以会保留旧的对象数据 直接上代码,原有的逻辑是点击时执行session安装,并注册监听回调 private fun installApk(position: Int) {val packageIns…...

大数据-274 Spark MLib - 基础介绍 机器学习算法 剪枝 后剪枝 ID3 C4.5 CART

点一下关注吧!!!非常感谢!!持续更新!!! 大模型篇章已经开始! 目前已经更新到了第 22 篇:大语言模型 22 - MCP 自动操作 FigmaCursor 自动设计原型 Java篇开…...

力扣面试150题--二叉树的锯齿形层序遍历

Day 56 题目描述 思路 锯齿形就是一层是从左向右,一层是从右向左,那么我们可以分析样例,对于第奇数层是从左向右,第偶数层是从右向左,于是可以采取一个计数器,采取链表方式,从左向右就是正常插…...

如何在 CentOS / RHEL 上修改 MySQL 默认数据目录 ?

MySQL 是一个广泛使用的开源关系数据库管理系统(RDBMS),为无数的 web 应用程序和服务提供支持。默认情况下,MySQL 将其数据存储在预定义的目录中,这可能并不总是适合您的需求。您可能希望将数据目录移动到另一个位置以获得更好的性能和安全性…...

网页前端开发(基础进阶2)

前面学习了html与css,接下来学习JS(JavaScript与Java无关)。 web标准(网页标准)分为3个部分: 1.html主要负责网页的结构(页面的元素和内容) 2.css主要负责网页的表现(…...

简历制作要精而不简

不得不说,不管是春招,还是秋招,我们在求职时,第一步便是制作一份简历。不得不承认,好的简历,就像一块敲门砖,能让面试官眼前一亮,让应聘成功的概率增添一分。 对于一个初次求职者来…...

SPA-RL:通过Stepwise Progress Attribution训练LLM智能体

SPA-RL:通过Stepwise Progress Attribution训练LLM智能体 在大语言模型(LLM)驱动智能体发展的浪潮中,强化学习(RL)面临着延迟奖励这一关键挑战。本文提出的SPA-RL框架,通过创新的分步进度归因机…...

【深度学习】9. CNN性能提升-轻量化模型专辑:SqueezeNet / MobileNet / ShuffleNet / EfficientNet

SqueezeNet / MobileNet / ShuffleNet / EfficientNet 一、背景与动机 随着深度神经网络在图像识别任务上取得巨大成功,它们的结构越来越深、参数越来越多。然而在移动端或嵌入式设备中: 存储资源有限推理计算能力弱能耗受限 因此,研究者…...

Relational Algebra(数据库关系代数)

目录 What is an “Algebra” What is Relational Algebra? Core Relational Algebra Selection Projection Extended Projection Product(笛卡尔积) Theta-Join Natural Join Renaming Building Complex Expressions Sequences of Assignm…...

【C/C++】面试常考题目

面试中最常考的数据结构与算法题,适合作为刷题的第一阶段重点。 ✅ 分类 & 推荐题目列表(精选 70 道核心题) 一、数组 & 字符串(共 15 题) 题目类型LeetCode编号两数之和哈希表#1盛最多水的容器双指针#11三数…...

Chorme如何对于youtube视频进行画中画背景播放?

画中画可以让你小窗播放,然后浏览器放后台还可以做点别的事情。 B站直接可以选择小窗播放,游览器最小化就可以,但是youtube的小窗播放游览器一切换就不显示了。 其实是因为youtube的小窗播放不是真的小窗播放。要想真的实现需要在youtube视…...

017搜索之深度优先搜索——算法备赛

深度优先搜索 如果说广度优先搜索是逐层扩散,那深度优先搜索就是一条道走到黑。 深度优先遍历是用递归实现的,预定一条顺序规则(如上下左右顺序) ,一直往第一个方向搜索直到走到尽头或不满足要求后返回上一个叉路口按…...

从单机到集群,再到分布式,再到微服务

我会尽量详细讲解,从单机到集群,再到分布式和微服务每个层次的概念、特点和应用场景。同时也会探讨C是否适合做微服务项目。 一、从单机到集群,再到分布式,再到微服务——详细解析 1. 单机(Single Machine&#xff09…...

关于ios点击分享自动复制到粘贴板的问题

前言 Android 系统没有什么特别的要求,实现这个也比较容易。但ios在某些情况下就会出现问题。 如果ios是点击之后,请求接口,再把接口的内容赋值给粘贴板肯定行不通,会被ios系统拦截,导致赋值失败或者赋值为空。建议使…...

Hive的JOIN操作如何优化?

Hive的JOIN操作优化是提升查询性能的关键,尤其是在处理大数据量时。以下是详细的JOIN优化策略和实现方法: 一、MapJoin(小表广播优化) 核心原理 将小表全量加载到每个MapTask的内存中,避免Shuffle,直接在…...

React Native 实现抖音式图片滑动切换浏览组件-媲美抖音体验的滑动式流畅预览组件

写在前面 “如何让用户像刷抖音一样浏览我们的图片列表?” —— 这个需求背后隐藏着性能、体验和交互设计的多重挑战。本文将带你从零实现一个高性能的React Native图片浏览器,支持分页预加载、横向滑动预览、文字展示和缓存优化,打造媲美原…...

睿抗机器人开发者大赛CAIP-编程技能赛-历年真题 解题报告汇总 | 珂学家

前言 汇总 睿抗机器人开发者大赛CAIP-编程技能赛-历年真题 解题报告汇总 2024年 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组 (国赛) 解题报告 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)解题报告 2024 睿抗机器人开发者大赛CAI…...

【c++】【数据结构】AVL树

目录 AVL树的定义AVL树的部分模拟实现平衡因子的引入平衡因子的向上调整旋转算法单旋算法右单旋左单旋 双旋算法左右双旋右左双旋 AVL树的定义 AVL树本质是一种搜索二叉树,传统的二叉搜索树我们都有所了解,其在理想情况下也就是接近满二叉树时拥有极高的…...

【原神 × 插入排序】刷圣遗物也讲算法:圣遗物评分系统背后的排序逻辑你真的懂吗?

📘 改编自:王争《数据结构与算法之美》 🎮 游戏演绎:米哈游《原神》 🧠 核心关键词:插入排序、排序算法、评分系统、属性评价、强化圣遗物、冒泡排序对比 🧭 引言:原神刷本=刷排序? 玩《原神》的玩家每天日常是啥?体力用来刷圣遗物、精通头、暴击头、攻充沙………...

ORB-SLAM2学习笔记:ExtractorNode::DivideNode和ORBextractor::DistributeOctTree函数详解

一、ExtractorNode::DivideNode void ExtractorNode::DivideNode(ExtractorNode &n1, ExtractorNode &n2, ExtractorNode &n3, ExtractorNode &n4) {const int halfX = ceil(static_cast<float>(UR.x-UL.x)/2);const int halfY = ceil(static_cast<f…...

nt!MmMapViewInSystemCache函数分析PointerPte的填充

第一部分&#xff1a; 1: kd> kc # 00 nt!MmMapViewInSystemCache 01 nt!CcGetVacbMiss 02 nt!CcGetVirtualAddress 03 nt!CcMapData 04 Ntfs!NtfsMapStream 05 Ntfs!NtfsReadBootSector 06 Ntfs!NtfsMountVolume 07 Ntfs!NtfsCommonFileSystemControl 08 Ntfs!NtfsFspDis…...

3D Tiles高级样式设置与条件渲染(3)

二、基于地理距离的条件渲染 1.根据与特定点的距离设置样式 在某些应用中&#xff0c;我们可能需要根据建筑物与某个特定点&#xff08;如地标建筑&#xff09;的距离来设置样式。以下代码示例展示了如何根据建筑物与广州塔的距离来设置颜色和可见性&#xff1a; tiles3d.styl…...

通义灵码深度实战测评:从零构建智能家居控制中枢,体验AI编程新范式

一、项目背景&#xff1a;零基础挑战全栈智能家居系统 目标&#xff1a;开发具备设备控制、环境感知、用户习惯学习的智能家居控制中枢&#xff08;PythonFlaskMQTTReact&#xff09; 挑战点&#xff1a; 需集成硬件通信(MQTT)、Web服务(Flask)、前端交互(React) 调用天气AP…...

头歌之动手学人工智能-Pytorch 之优化

目录 第1关&#xff1a;如何使用optimizer 任务描述 编程要求 测试说明 真正的科学家应当是个幻想家&#xff1b;谁不是幻想家&#xff0c;谁就只能把自己称为实践家。 —— 巴尔扎克开始你的任务吧&#xff0c;祝你成功&#xff01; 第2关&#xff1a;optim.SGD 任务描述…...

基于谷歌ADK的智能客服系统简介

Google的智能体开发工具包&#xff08;Agent Development Kit&#xff0c;简称ADK&#xff09;是一个开源的、以代码为中心的Python工具包&#xff0c;旨在帮助开发者更轻松、更灵活地构建、评估和部署复杂的人工智能智能体&#xff08;AI Agent&#xff09;。ADK 是一个灵活的…...

(一)视觉——工业相机(以海康威视为例)

一、工业相机介绍 工业相机是机器视觉系统中的一个关键组件&#xff0c;其最本质的功能就是将光信号转变成有序的电信号。选择合适的相机也是机器视觉系统设计中的重要环节&#xff0c;相机的选择不仅直接决定所采集到的图像分辨率、图像质量等&#xff0c;同时也与整个系统的运…...

DAY 36 超大力王爱学Python

仔细回顾一下神经网络到目前的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a;对之前的信贷项目&#xff0c;利用神经网络训练下&#xff0c;尝试用到目前的知识点让代码更加规范和美观。探索性作业&#xff08;随意完成&#xff09;&#xff1a;尝试进入nn.Mo…...