【Python】字典 文件操作 生成二维码 多媒体操作

目录

字典

创建字典

查找key

新增键值对

修改键值对

删除键值对

遍历键值对

keys()

values()

items()

合法的key类型

文件

文件是什么

打开文件

关闭文件

写文件

读文件

*上下文管理器

实现文件查找工具 

pip包管理器

生成二维码 

安装第三方库

生成二维码

操作excel

多媒体操作 

播放声音


字典

字典是什么

字典是一种存储键值对的结构

键与值一对一映射,可以根据键找到值

创建字典

//第一种方法

a={

        'id':1,

        'name':'lzb'

}

//第二种方法

b=dict(id=1,name='lzb')

print(a)

  • 一个字典的可key类型不一定都一样
  • 一个字典中的value的类型也不必一样
  • 最后一个键值对的逗号可写可不写

查找key

  • 使用in可以判定key是否在字典中存在,返回布尔值

a={

        'id':1,

        'name':'lzb'

}

print('id' in a)

  • 使用 [ ] 通过类似于取下标的方式,获取到元素的值,只不过此处的“下标”是key

a={

        'id':1,

        'name':'lzb'

}

//若key不存在则抛出异常

print(a['id'])

对于字典来说,使用in或者 [ ]来获取value都是非常高效的操作

对于列表来说,使用in比较低效(需要把整个列表遍历一遍),而使用 [ ]是比较高效的。

新增键值对

a={

        'id':1,

        'name':'lzb'

}

//这个操作就是往字典里插入新的键值对

a['score']=90

print(a)

修改键值对

a={

        'id':1,

        'name':'lzb'

}

a['id']=2

print(a)

删除键值对

a={

        'id':1,

        'name':'lzb'

}

a.pop('name')

print(a)

遍历键值对

这里循环遍历,获取到的是key值,我们可以通过[ ]获取value值

a={

    'id':1,

    'name':'lzb'

}

for key in a:
    print(key,a[key])

python中哈希存储是无序的,但是打印时按照存储顺序进行打印 

keys()

获取所有key值

a={

    'id':1,

    'name':'lzb'

}

print(a.keys())

//返回值是一个自定义的类型,使用的时候也可以把它当作列表使用

values()

获取所有value

items()

a={

    'id':1,

    'name':'lzb'

}

print(a.items())

//返回值是一个像列表一样的结构,里面每个元素又是一个元组,元组里面包含了,键和值

我们可以循环遍历items的返回值,例如:
 

for key,value in a.items():
    print(key,value)

合法的key类型

不是所有的类型都可以作为字典的key,字典本质上是一个哈希表的key要求是“可哈希的”,也就是可以计算出一个哈希值。

  • 可以使用hash函数计算某个对象的哈希值
  • 能够计算出哈希值的类型,都可以字典的key
  • 在python中hash函数能够计算出一个变量的哈希值

//整型

print(hash(0))

//字符串
print(hash('hello'))

//布尔值
print(hash(True))

//元组
print(hash((1,2,3)))

列表、字典是不可以计算出哈希值的

  • 不可变的对象一般是可哈希的
  • 可变的对象一般是不可哈希的 

文件

文件是什么

变量是把数据保存到内存中,如果程序重启/主机重启,内存中的数据就会丢失,要想让数据被持久化存储,就可以把数据存储到硬盘中,也就是文件中保存。

打开文件

使用open打开一个文件

f=open('d:/.../test.txt','r')

  1. f是open的返回值,返回一个文件对象(句柄)
  2. ‘r’是对指定文件的打开方式,
  • r表示按照读的方式打开
  • w表示按照写的方式打开
  • a表示也是按照写的方式打开,把内容写到原有文件的末尾

关闭文件

使用close方法关闭已经打开的文件

f=open('d:/.../test.txt','r')

f.close()

因为一个系统的资源是有限的,因此一个程序能打开的文件个数,也是有上限的,在不需要使用文件的时候,资源就应该及时释放 

写文件

使用write方法

f=open('d:/.../test.txt','w')

f.write('hello')

f.close()

  • 使用r读方式打开,使用write会抛异常
  • 使用w写方式打开,原文件内容会先被清空再写入
  • 使用a追加的方式打开,原文件内容不会被清空

读文件

  • 读文件内容需要使用‘r’的方式打开文件
  • 使用read方式完成读操作,参数表示“读取几个字符”

1、指定读取几个字符

//这里指定encoding编码方式

f=open('d/test.txt','r',encoding=utf8)

//resulte为读取到的字符

resulte = f.read(2)

print(result)

f.close()

2、按行读取文件内容

f=open('d/test.txt','r',encoding=utf8)

for line in f:

        print(f'line={line}',end='')  //这里修改print的end参数值,让他不再自动换行

f.close()

3、使用readlines方法直接把整个文件所有内容都读出来,按照行组织到一个列表里 

f=open('d/test.txt','r',encoding=utf8) 

lines=f.readlines()

print(lines)

f.close()

*上下文管理器

为了防止打开文件后,因为中途抛异常或者提前返回而忘记关闭文件,因此需要使用上下文管理器,对f进行监管,当with对应的代码块执行结束,会自动对f进行close操作

with open('d:/test.txt','r',encoding='utf8') as f:

        #进行文件处理的逻辑

实现文件查找工具 

代码如下:

import osinputPath=input('请输入要搜索的路径:')
pattern =input('请输入要搜索的关键词:')for dirpath,dirname,filenames in os.walk(inputPath):for f in filenames:if pattern in f:print(f'{dirpath}/{f}')

结果如下:

代码分析:

for dirpath,dirname,filenames in os.walk(inputPath)

  • os.walk每次调用,都能自动去针对子目录进行递归的操作,只需要使用上述循环,就可以把所有的路径都获取出来
  • dirpath遍历到当前位置,对应的路径是啥
  • dirname当前目录下,都有哪些目录,是一个列表,可以包含多个目录名
  • filenames当前目录下,都有哪些文件名,是一个列表,可以包含多个文件名

pip包管理器

pip是Python内置的包管理器,所谓的包管理器就是类似于我们平时使用手机的app应用商店一样,第三方库有很多,是不同的人,不同的组织实现的,为了方便大家整理,python官方提供了一个网站PyPI · The Python Package Index 来收集第三方库,我们可以通过pip工具下载PYPI上的库。

  • pip在我们安装Python的时候就已经内置了,无需额外安装
  • pip是一个可执行程序,就在python的安装目录中

使用一下命令,即可安装第三方库

pip install [库名] 

注意:这个命令需要从网络上下载,使用时,需要保证网络畅通

安装成功后,即可使用import导入相关模块,即可进行使用 

如果提示

‘pip’ 不是内部或外部命令,也不是可运行程序

或批处理文件。

说明没有正确把pip加入PATH中,可以手动把pip所在的路径手动加入到PATH环境变量中,也可以重装python,勾上如下选项:

生成二维码 

二维码的本质是字符串,日常中的二维码一般是url,让用户跳转到网页


安装第三方库

 pip install qrcode[pil]

生成二维码

import qrcode

img=qrcode.make("12345")
img.save("1.png")

保存的二维码在同级目录中 

操作excel

  • 读取excel可以使用xlrd模块
  • 修改excel可以使用xlwt模块

安装xlrd

pip install xlrd==1.2.0

注意:此处要指定版本号安装,如果不指定版本号,则安装最新版,最新版里删除了对xlsx格式文件的支持

代码示例:

import xlrd

#先打开xlsx文件

xlsx=xlrd.open_workbook('d:/test.xlsx')

#获取到指定的标签页

table=xlsx.sheet_by_index(0)

#获取到表格中有多少行

nrows=table.nrows

#进行循环统计操作

total=0

count=0

for i in range(1,nrows):

        classId=table.cell_value(行号,列号)

多媒体操作 

播放声音

  • playsound用于播放音频
  • pynput用于监听键盘按键,注意版本不要用最新

pip install pynput==1.6.8

pip install playsound==1.2.2

监听键盘事件的代码示例:

from pynput import keyboarddef onRelease(key):print(key)
listener=keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()

要播放的音频放在同级的目录里

from  playsound import playsound
playsound('/1.mp3')

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

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

相关文章

MySql在更新操作时引入“两阶段提交”的必要性

日志模块有两个redo log和binlog,redo log 是引擎层的日志(负责存储相关的事),binlog是在Server层,主要做MySQL共嗯那个层面的事情。redo log就像一个缓冲区,可以让当更新操作的时候先放redo log中&#xf…

2024.9.24 作业

My_string类中的所有能重载的运算符全部进行重载、[] 、>、、>) 仿照stack类实现my_stack,实现一个栈的操作 #include <iostream> #include <cstring>using namespace std;class My_string{ private:char *ptr;int size;int len;public://无参构造My_strin…

Miniforge详细安装教程(macOs和Windows)

(注&#xff1a;主要是解决商业应用anaconda收费问题&#xff0c;这是轻量级的代替&#xff0c;个人完全可以使用anaconda和miniconda) Miniforge 是一个轻量级的包管理器&#xff0c;类似于 Anaconda 和 Miniconda。它主要用于安装基于 conda 的 Python 环境&#xff0c;专注于…

IPEmotion 2024 R2现支持Amazon S3和Windows SMB服务器

新版IPEmotion 2024 R2软件推出了许多新功能&#xff0c;其中的一大功能是支持Amazon S3、Windows SMB服务器以及新的IPE-CAM-007 USB摄像头。IPEmotion 2024 R2还支持直接写入TEDS数据和配置可装载电池的新款IPE833记录仪。 — 创新成果一览 — ■ 支持Amazon S3、Windows SM…

IDEA 系列产品 下载

准备工作 下载 下载链接&#xff1a;https://www.123865.com/ps/EF7OTd-mbHnH 仅供参考 环境 演示环境&#xff1a; 操作系统&#xff1a;windows10 产品&#xff1a;IntelliJ IDEA 版本&#xff1a;2024.1.2 注意&#xff1a;如果需要其他产品或者版本可以自行下载&#xff0…

虚幻引擎UE5如何云渲染,教程来了

​步骤一&#xff1a;获取云渲染权限 访问渲染101官网&#xff0c;使用云渲码6666进行注册。 下载并安装渲染客户端。 步骤二&#xff1a;设置渲染环境 确保云渲染环境与您的本地环境一致&#xff0c;避免出错。 步骤三&#xff1a;任务提交 完成环境配置后&#xff0c;解析…

【LeetCode】每日一题 2024_9_27 每种字符至少取 K 个(双指针)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;每种字符至少取 K 个 代码与解题思路 func takeCharacters(s string, k int) int {// 核心思路&#xff1a;// 题目要求字符串 s 中&#xff0c;每种字符都取至少 k 个// 而且可以从头取…

腾讯一面-LRU缓存

为了设计一个满足LRU&#xff08;最近最少使用&#xff09;缓存约束的数据结构&#xff0c;我们可以使用哈希表&#xff08;HashMap&#xff09;来存储键值对&#xff0c;以便在O(1)时间复杂度内访问任意键。同时&#xff0c;我们还需要一个双向链表&#xff08;Doubly Linked …

excel统计分析(3): 一元线性回归分析

简介 用途&#xff1a;研究两个具有线性关系的变量之间的关系。 一元线性回归分析模型&#xff1a; ab参数由公式可得&#xff1a; 判定系数R2&#xff1a;评估回归模型的拟合效果。值越接近1&#xff0c;说明拟合效果越好&#xff1b;值越接近0&#xff0c;说明拟合效果越…

DC00020基于springboot新闻网站系统java web项目MySQL新闻管理系统

1、项目功能演示 DC00020基于springboot新闻网站系统java web项目MySQL 2、项目功能描述 基于springbootvue新闻网站包括用户和系统管理员两个角色。 2.1 用户功能 1、用户登录、用户注册 2、新闻信息&#xff1a;点赞、点踩、收藏、查看 3、用户分享&#xff1a;点赞、点踩…

一键降重:芝士AI如何简化论文查重过程?

大家写论文时“旁征博引”是常规操作&#xff0c;所以重复率就成了投稿前的“噩梦”。自己降重&#xff0c;发现怎么改写都无法下降重复率&#xff0c;可能一天改下来下降3%&#xff0c;让人抓狂。 但今天开始&#xff0c;你不用再苦恼啦&#xff0c;更不用自己抓耳挠腮一整天…

【计算机网络 - 基础问题】每日 3 题(二十七)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

使用FFmpeg压缩MP3格式音频

FFmpeg简介 FFmpeg 是一个开源的多媒体框架&#xff0c;能够录制、转换数字音频和视频&#xff0c;并将其转码到流行的格式。它被广泛应用于音视频处理领域&#xff0c;支持几乎所有的音视频格式和编解码器。以下是 FFmpeg 的一些关键特点和功能&#xff1a; 主要特点 跨平台…

微服务Redis解析部署使用全流程

1、什么是Redis Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可以理解成一个大容量的map。…

PCI数据采集卡500K频率32路模拟量采集 DIO各16路 DAQ卡——PCI8735

品牌&#xff1a;阿尔泰科技 型号&#xff1a;PCI8735 概述&#xff1a; 产品应用&#xff1a; 板卡图片&#xff1a; 指标参数&#xff1a; 模拟量输入 通道数 单端32路/差分16路 精度 12位 采样频率 500KHz 通道切换方式 首末通道顺序切换 AD量程 10V&#xff0c;5V&#x…

Mbox物联网关:驱动工业数据汇聚与智能处理的核心引擎

在数字化转型的汹涌浪潮中&#xff0c;Mbox物联网关作为工业物联网领域的佼佼者&#xff0c;正引领着制造业向智能化、高效化方向迈进&#xff0c;深刻重塑着传统工业的生产生态与效率边界。作为连接物理世界与数字世界的智能桥梁&#xff0c;明达技术自主研发的Mbox物联网关在…

大数据新视界 --大数据大厂之数据压缩算法比较与应用:节省存储空间

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

mysql---索引类型及索引方法使用

mysql索引类型 Normal、Full Text、Unique 在 MySQL 中&#xff0c;索引的类型主要有以下几种&#xff1a; Normal Index&#xff08;普通索引&#xff09;&#xff1a; 这是最基本的索引类型&#xff0c;没有唯一性要求。允许重复值&#xff0c;可以加速查询性能。用法&#…

容器编排工具Docker Compose

目录 一、Docker Compose概述 1、主要功能 2、工作原理 二、常用命令参数 1、服务管理 2、构建和重新构建服务 三、Docker Compose的yml文件 1、服务 2、网络 3、存储卷 四、容器编排实现haproxy和nginx负载均衡 一、Docker Compose概述 1、主要功能 定义服务&#xf…

又一条地铁无人线开通!霞智科技智能清洁机器人正式“上岗”

2024年9月26日12时&#xff0c;又一条无人线开通运营&#xff0c;这是陕西省首条全自动无人驾驶地铁线路。该线路作为北跨战略的先行工程&#xff0c;是连接主城区与渭北地区的轨道交通快线&#xff0c;对优化城市总体空间布局、推动区域融合发展、促进沿线产业升级具有十分重要…