Python-13(永久存储)

news2025/7/23 6:03:35

创建并打开文件

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 pickle

with 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.coloradmin.cn/o/2395420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记录一次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 将其数据存储在预定义的目录中,这可能并不总是适合您的需求。您可能希望将数据目录移动到另一个位置以获得更好的性能和安全性…

简历制作要精而不简

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

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…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DAY 36 超大力王爱学Python

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

SRD-12VDC-SL-C 继电器‌接线图解

这个继电器可以使用12伏的直流电源控制250伏和125伏的交流电,也可以控制30伏和28伏的直流电,电流都为10安。 此继电器有5个引脚,各个的作用如下: 引脚4和引脚5为触点, 引脚1和引脚3为线圈引脚,接12伏的直…

基于开源链动2+1模式AI智能名片S2B2C商城小程序的企业组织生态化重构研究

摘要:本文以互联网时代企业组织结构变革为背景,探讨开源链动21模式AI智能名片S2B2C商城小程序在推动企业从封闭式向开放式生态转型中的核心作用。通过分析传统企业资源获取模式与网络化组织生态的差异,结合开源链动21模式的裂变机制、AI智能名…

2,QT-Creator工具创建新项目教程

目录 1,创建一个新项目 demo_01.pro(项目配置文件) 类似 CMakeList.txt widget.h(头文件)​ main.cpp(程序入口)​ widget.cpp(源文件)​ widget.ui(界面设计文件)​ 1,创建一个新项目 依次选择: 设置路径: 选择编译器: 如果选择CMake, 就会生成cmakel…