python基础语法-文件操作及深浅拷贝(简单实用)

Python基础:深浅拷贝 Python中的深浅拷贝在处理可变对象时有重要区别。浅拷贝仅复制外层对象,而嵌套的可变元素仍为原对象的引用,适用于简单对象;深拷贝会递归复制所有层级(包括嵌套元素),实现完全独立,适合复杂嵌套对象。关键区别在于:浅拷贝下嵌套可变元素的修改会相互影响,而深拷贝则完全隔离。不可变对象的拷贝无实际意义,因它们无法修改。应用时需根据数据结构选择:无嵌套或嵌套不可变元素用浅拷贝,含嵌套可变元素且需隔离时用深拷贝,但要注意深拷贝的性能开销。 阅读详情

文件操作

使用内置函数open来操作文件有三步:打开文件,操作文件,关闭文件。
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

读写形式

r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
f = open(‘/Users/michael/test.txt’, ‘r’)

rb: 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。

r+: 打开一个文件用于读写。文件指针将会放在文件的开头。

rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a: 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

文件的基本操作还有:
flush(), 即时刷新,可以在文件未关闭之前看到文件更新内容,不接参数。

readline(),读取当前指针处的一行内容。

readlines(n),读取当前指针处的n个字符,如果n不写,则默认全读完,如果n小于当前行的字符长度,则读取当前行内容,包括换行符\n,如果n大于当前行的字符长度,则一直到第从当前指针处的第n个字符所在的行,每一行的内容包括换行符作为一个列表的元素,最终返回该列表。

close(),关闭文件,文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

seek(n),调整指针位置

tell(),返回当前指针位置。

truncate(),截取当前指针处之前的字节内容。文件关闭时,就只有截取的内容了。

read(n),读取从当前指针处的多少个字符。返回的是字符串,read函数可以一次性读取文件全部内容,如果文件内容不大的话,适合使用这个函数一次性读取全部内容

write(),写入字符串或字节。

next(),逐行读取数据,和readline() 相似,唯一不同的是,f.readline() 读取到最后如果没有数据会返回空,而f.next() 没读取到数据则会报错

try…finally 保证无论是否出错都正确关闭文件
try:
f = open(‘/path/to/file’, ‘r’)
print(f.read())
finally:
if f:
f.close()

with 语句自动帮我们调用close() 方法 with打开文件会自动关闭文件
with open(‘/path/to/file’, ‘r’) as f:
print(f.read())

深浅拷贝

浅拷贝

浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用,只复制最外层的结构,除最外层其余的直接将其地址引用过来。
浅拷贝出来的对象就是外新内旧的对象,对象本身(id)和原始对象完全不同,但是子对象和原始对象的子对象是一样的。
可以通过列表自带的copy()或者copy模块的copy.copy()实现浅拷贝
对不可变类型,比如元组,字符串,不可以使用切片或者tuple方法浅拷贝,这两种都是对原对象的引用

深拷贝

全部数据/结构都进行复制,(除不可变类型)增大数据独立性 ,如果深拷贝中,只要发现复制数据中有一个不是不可变类型就重新创建。
深拷贝出来的对象就是完完全全的新对象,不管是对象本身(id),还是对象中包含的子对象,都和原始对象不一样。
相当于重新分配一块内存,创建了一个新的对象
一般以copy.deepcopy() 实现深拷贝

Python-PyYAML 通过PyYaml库操作yaml文件 阅读详情

相关推荐

python基础语法

就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,字典对象的核心其实是个散列表,而散列表是一个稀疏数组(不是每个位置都有值),每个单元叫做bucket,每个bucket有两部分:一个是键对象的引用,一个是值对象的引用,由于,所有bucket结构和大小一致,我们可以通过偏移量来指定bucket的位置。:字典中的元素没有特定的顺序,不像列表和元组那样按照索引访问。通过键来访问和操作字典中的值。这使得字典成为存储和操作动态数据的理想选择。值可以是任意类型的对象,如整数、字符串、列表、元组等。

qq_48224700的博客 1535

yaml.load(f, Loader=yaml.FullLoader)参数解读

yaml的参数解读

weixin_43868406的博客 1万+

Python进阶—高级语法

**#******直接执行自定义原生*sql*(完全避开模型层,类似******pymysql****操作)*fromdjango.dbimportconnection'select***#((2, ‘*小时光*未来可期*打破思维里的墙*时光不散*

if_Echo_else的博客 1638

Python中with open () as f

with open("log.txt","w") as log_f: for i in range(4): print(i) # i= 0,1,2,3 log_f.write( 'Epoch: %d - Total Loss: %d - Val Loss: %d' %( i, i, i) ) log_f.write("\n") log_f.flush() r: 以只读方式打开文件。文件的指针将会放在文件的开头。这是**默认模式

学无止境、积少成多、厚积薄发 3222

Python报错:module ‘yaml‘ has no attribute ‘FullLoader’,可能是许多Python开发人员在编写代码时遇到的常见问...

但有时,当您尝试使用PyYAML模块的“load”或“safe_load”函数加载YAML文件时,您可能会遇到如下错误消息:“ module ‘yaml‘ has no attribute ‘FullLoader’”。总之,无论您遇到什么问题,您都应该始终保持对库、包和模块的更新,并且了解它们是否具有不兼容的更改。这样,您就可以避免由此引起的任何问题,并维护您的应用程序的稳定性。在上面的代码中,我们使用try-except块检查“CLoader”是否可用,否则,我们将回退到标准的“Loader”。

. 1751

cadence allegro 17.x 降版本到16.6的转换工具

Cadence17.x版本降低到16.6版本转换工具 下载链接:Cadence17.x版本降低到16.6版本转换工具   使用方法: 软件使用比较简单,在「第一个路径输入栏」浏览指向17.x的设计文件,也就是需要降版本的17.4或者17.2的文件,然后在「第二个路径输入栏」里浏览指向转换后的文件保存路径,然后点击「转换」按钮即可。 ...

ltqdxl的博客 1万+

python语法学习第七天--文件

打开文件:open()
 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
 参数说明:
 1、file: 必需,文件...

qq_44711190的博客 657

暴力破解pdf文档密码

相信小伙伴们都遇到这种情况;你收到了一些标题很吸引人的pdf文档 或者是重要数据泄露 学习资料总结,再或者是某机构的押题密卷,打开pdf却提示你要输入密码 因为不知道密码 只能弃罢。我就遇到过这种情况 网友发来了标题为某天一的押题密卷 ,我也想看看这个卷子的题怎么样,因为被设置了密码 我尝试用6到10位的纯数字组合来暴力破解这个pdf,结果三 四个小时都没找到正确的密码。有些网友为破解这个密码 请某宝某多来破解 也都没有破解成功。

shelter1234567的博客 1万+

Python深浅拷贝

在 Python 中,可变类型和不可变类型的拷贝行为有所不同。理解它们的区别对于正确使用浅拷贝和深拷贝非常重要。类型浅拷贝行为深拷贝行为不可变类型与赋值相同,直接引用原对象(如果包含可变对象,则嵌套的可变对象共享)与赋值相同,直接引用原对象(如果包含可变对象,则嵌套的可变对象共享)可变类型创建新对象,但嵌套的可变对象共享创建新对象,并递归复制所有嵌套的可变对象。

大龄程序员 2037

Crossbar RRAM技术解析:从1TnR架构到存储革命

非易失性存储器(NVM)是数据存储的核心技术,其原理基于物理状态的稳定改变以实现数据持久化。阻变存储器(RRAM)作为一种新兴NVM,利用导电细丝在介质层中的形成与断裂实现数据存储,具有高速、低功耗和结构简单的优势。在工程实践中,RRAM面临潜行路径电流等挑战,而Crossbar提出的1TnR架构通过引入共享晶体管有效解决了这一问题,在保证性能的同时提升了集成密度。该技术与CMOS工艺兼容,支持后端集成与多层堆叠,为高密度存储和嵌入式应用提供了新的解决方案。结合当前行业对高能效、高密度存储的需求,RRAM在

weixin_42523104的博客 321

PaddleOCR实战:DBnet++与DBnet模型训练全流程解析

本文详细解析了基于PaddleOCR框架的DBnet与DBnet++文字检测模型的完整训练流程。从环境配置、数据集准备、配置文件解读,到模型训练、评估调参及最终推理部署,提供了实战指南。重点对比了DBnet++与DBnet在精度、速度及适用场景上的差异,帮助开发者高效构建定制化的OCR检测模型。

weixin_29038155的博客 333

Python中的深浅拷贝

无法拷贝内层对象 ⑤ 浅拷贝栗子 Ⅰ. 切片操作 它与相似,意思是从0索引拆分到末尾。它返回一个新列表。 Ⅲ. copy模块中的copy函数 但是在lst中有一个嵌套的list[3,4],如果我们修改了它,情况就不一样了。 ② 复杂的可变数据类型 ④ 复杂的不可变数据类型 3. 深浅拷贝特殊案例 ① 可变嵌套不可变类型 浅拷贝 深拷贝

weixin_45862390的博客 2027

阿里云百炼平台创建智能体-上传文档

阿里云百炼智能体-上传文档文件

weixin_43930851的博客 1356

Python进阶07-高级语法

当浅复制的值是不可变对象(字符串、元组、数值类型)时和“赋值”的情况一样,对象的id值(id()函数用于获取对象的内存地址)与浅复制原来的值相同。当浅复制的值是可变对象(列表、字典、集合)时会产生一个“不是那么独立的对象”存在。第一种情况:复制的对象中无复杂子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。

李宥的博客 2236

手把手教你RK3568 MIPI屏驱动适配,纯干货!

RK3568 作为一款高性能的多媒体处理器,在嵌入式领域中备受瞩目。它采用了先进的 22nm 制程工艺,搭载四核 Cortex-A55 处理器,这种架构为芯片提供了高效的功耗比,使其在运行各种复杂任务时,既能保证性能,又能有效控制功耗。在实际应用中,无论是多任务处理还是运行大型应用程序,RK3568 都能凭借其四核 Cortex-A55 处理器,实现流畅的操作体验,满足智能设备对高性能和低功耗的需求。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4071

手把手教你学Simulink——基于Simulink的模糊自适应PI调节FOC电流环

本文提出基于模糊自适应PI控制的FOC电流环优化方案,针对传统PI控制参数固化、抗扰性差等问题,通过模糊逻辑在线调整PI参数。方案采用双输入(电流误差及变化率)和三输出(ΔKp/ΔKi/PI调节)结构,实现动态响应时间<30μs(提升38%)、超调<5%(降低71%)、参数摄动下误差<±0.4A(精度提升73%)。详细介绍了Simulink建模步骤,包括模糊规则设计(7语言变量、49条规则)、隶属度函数配置及自适应PI实现逻辑,并提供实机部署建议。仿真结果表明,该方法显著提升系统鲁棒性,特

MHD0815的博客 79

doraemon的python 深浅拷贝和文件操作

DAY07 今日内容 深浅拷贝(面试) 文件操作 内容回顾和补充 1.内容回顾 计算机基础 编码 if while for 语法 数据类型 range/type/in 运算符 2.面试题 公司线上系统用的是什么 py2和py3的...

Endless1991的博客 244

YOLOv8【第十章:多任务扩展深度篇·第18节】不规则工业缺陷分割——针对划痕、裂纹的 Seg 模型调优!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 3981

python基础语法 百度网盘,python基础语法视频教程

(自定义模块、模块的搜索路径、time模块、获取当前日期和时间)

chatgpt001的博客 881

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【python语法基础篇2】

格式:def wen(a = 10):设置默认值,没有传值会根据默认值执行代码,传了值根据传入的值来执行代码。定义元组时,如果只有一个元素,末尾要加逗号,多个元素用逗号隔开,元素可以是不同类型的。浅拷贝:数据半共享,会创建新的对象,拷贝第一层的数据,嵌套层会指向原来的内存地址。含义:变量对应的值不可以修改,如果修改就会生成一个新的值从而分配新的内存空间。remove():选择删除的元素,如果集合中有就删除,没有会报错。调用几次,函数里面的代码就会运行几次,每次调用的时候,函数就会从头开始执行。

qq_73630485的博客 1653

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

(必看)Python基础知识

1.python里面%d表数字,%s表示字符串,%%表示一个%; 2.单引号内嵌套单引号需要转义字符/;单引号内嵌套双引号不需要嵌套; 双引号内嵌套双引号需要转义字符/;双引号内引用单引号不需要转义字符。 3.字符串编译的过程:gbk==>unicode==>utf16==>url解码 字符串解码顺序为:url解码==>utf16==>unicode==>gbk 4.可变数据类型:列表[],字典{},集合 不可变数据类型:整形int、字符串str‘’、元组() 5.lis

Kinght_123的博客 7623

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Python闭包装饰器与深浅拷贝】

在不改变现有函数源代码以及函数调用方式的前提下,实现给函数增加额外的功能。装饰器的本质就是一个闭包函数(三步:① 有嵌套 ② 有引用 ③ 有返回)方式1:传统方式变量名= 装饰器名(原有函数名变量名()方式2:语法糖: @装饰器名这种方式最常见也最常用例方式2,发表评论前,都是需要先登录的。先定义有发表评论的功能函数,然后在不改变原有函数的基础上,需要提示用户要先登录'''装饰器:本质就是一个闭包 ① 有嵌套 ② 有引用 ③ 有返回'''# 开发登录验证功能。

weixin_55448492的博客 890

python基础语法中处理一组数据所使用的类型有哪些_第一阶段:Python开发基础 day09 Python基础语法入门--数据类型分类深浅拷贝文件的使用...

上节课内容回顾列表类型的内置方法优先掌握按索引取值(正向取值+反向取值),即可存也可以取切片长度len成员运算in 和 not in追加 append删除 delfor 循环需要掌握insertpopremovecountindexclearcopyextendreversesort 排序元组类型的内置方法优先掌握索引取值切片(顾头不顾尾,步长)长度 len成员运算 in 和 not in循环co...

weixin_39901412的博客 502

python语言基础(六)--深浅拷贝、闭包与装饰器

本文主要介绍python的深浅拷贝、闭包和装饰器的用法以及作用~

egglikeFe的博客 1634

【零基础学python】python高级语法(三)

浅拷贝(shallow Copy)是创建一个新的列表对象,该对象与原始列表共享相同的元素对象。是指创建后不能更改其值或状态的对象。如果对不可变类型的对象进行修改,将会创建一个新的对象,原始对象的值保持不变。2,元组使用圆括号()来表示,其中的元素可以是任意类型,并且可以包合重复的元素。列表推导式(List comprehensions)是一种简洁的语法,用于创建新的列表,并可以在创建过程中对元素进行转换、筛选或组合操作。1,元组(Tuple)是Python中的一种数据类型,它是一个有序的、木可变的序列。

星凡的技术进阶博客 1086
上一篇: python基础语法-类与对象(简单实用)
下一篇: python爬虫-HTML基础(简单实用)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值