自学内容网 自学内容网

【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 os

inputPath=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 keyboard

def onRelease(key):
    print(key)
listener=keyboard.Listener(on_release=onRelease)
listener.start()
listener.join()

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

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


原文地址:https://blog.csdn.net/lzb_kkk/article/details/142299287

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!