day22 模块-collections,time,random,pickle,shelve等

一、引入模块的方式:

1. 认识模块
模块可以认为是一个py文件. 模块实际上是我们的py文件运行后的名称空间
导入模块:
1. 判断sys.modules中是否已经导入过该模块
2. 开辟一个内存
3. 在这个内存中执行该py文件
4. 给这个内存起个名字, 一般用的是py文件的名字。返回给导入方
如果你的py文件是启动文件, 名字是__main__

程序的入口一般是:
if __name__ == "__main__":
  pass

1. import 模块

import 模块名
模块名.属性/方法/类

每个模块都有自己的独立的名称空间,每个都有一个global, 互相并不影响
模块.属性 = 值. # 不要随意更改模块的值

 

2. from xxx import 模块

from 模块 import 函数/变量
当作自己的变量或者函数来使用

from xxx import * 导入所有
导入的内容都可以起别名 as

 

二、collections模块

collections模块主要封装了一些关于集合类的相关操作

  1. Counter——counter是一个计数器. 主要⽤用来计数
  2. deque 双向队列

需了解栈和队列

栈:  FILO. 先进后出  -> 砌墙的砖头, 老师傅做馒头

队列: FIFO. 先进先出  -> 买火⻋车票排队, 所有排队的场景

队列: python提供了queue模块. 使用起来非常⽅便

注意. 如果队列里没有元素了. 再也就拿不出来元素了. 此时程序会阻塞.

双向队列 collections中的,可以从左侧添加,也可从右侧添加,删除同理

  3.namedtuple 命名元组

给元组内的元素进行命名

from collections import namedtuple

# ⾃⼰定义了一个元组, 如果灵性够好, 这其实就是创建了了⼀个类

nt = namedtuple("point", ["x", "y"])

p = nt(1, 2)

print(p)

print(p.x)

print(p.y)

 

  4.orderdict和defaultdict

orderdict 顾名思义. 字典的key默认是无序的. 而OrderedDict是有序的

defaultdict: 可以给字典设置默认值. 当key不存在时. 直接获取默认值:

from collections import defaultdict

dd = defaultdict(list)  # 默认值list

print(dd['娃哈哈']) # [] 当key不存在的时候. 会自动执⾏构造方法中传递的内容.

 

三、time模块  时间模块

 1.  时间戳(timestamp). 时间戳使⽤的是从1970年01月01日 00点00分00秒到现在一共经过了了多少秒... 使⽤float来表示

2.  格式化时间(strftime). 这个时间可以根据我们的需要对时间进⾏任意的格式化.

 

1. 获取系统时间 time.time() 时间戳

2. 格式化时间 strftime() 时间格式: %Y-%m-%d %H:%M:%S       %Y-%m-%d

3. 结构化时间 time.gmtime() time.localtime()

   strptime() 把格式化时间转化成结构化时间

   mktime()  把结构化时间转化成时间戳

 

s = time.strftime("%Y-%m-%d %H:%M:%S")  格式化

print(s)

 

print(time.localtime()) #结构化时间

结果: time.struct_time(tm_year=2017, tm_mon=05, tm_mday=8, tm_hour=10, tm_min=24, tm_sec=42, tm_wday=0, tm_yday=126, tm_isdst=0)

 

所有的转化都要通过结构化时间来转化.

t = time.localtime(1888888888)  # 结构化时间

s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间

print(s)

 

s = "2020-10-01 12:18:12"

t = time.strptime(s, "%Y-%m-%d %H:%M:%S")   # 转化成结构时间

print(time.mktime(t))   # 转换成时间戳

 

四、random模块 -随机

1 import random 
2 print(random.random())  # 0-1⼩小数 
3 print(random.uniform(3, 10))  # 3-10⼩小数 
4 print(random.randint(1, 10))  # 1-10整数 
5 [1, 10] print(random.randrange(1, 10, 2))  # 1-10奇数 
6 [1,10) print(random.choice([1, '周杰伦', ["盖伦", "胡辣汤"]]))  # 1或者23或者[4,5]) 
7 print(random.sample([1, '23', [4, 5]], 2))  # 列列表元素任意2个组合 
8 lst = [1, 2, 3, 4, 5, 6, 7, 8] random.shuffle(lst)  # 随机打乱顺序 
9 print(lst)

 

五、os、sys

os和sys

 

os.sep 文件路径分隔符

sys.path  python查找模块的路径

 

六、序列化

 

    1. pickle  把一个对象转化成bytes写入到文件

        pickle.dumps() 把对象转换成bytes

        pickle.loads() 把bytes转化成对象

 

        pickle.dump() 把对象转换成bytes. 写入到文件

        pickle.load() 把文件中的bytes读取. 转化成对象

         那真的要写入或者读取多个内容怎么办? 很简单. 装list里. 然后读取和写入都⽤list

创建一个Car类 拥有名字,年龄属性

lst = [Cat("jerry", 19), Cat("tommy", 20), Cat("alpha", 21)]

f = open("cat", mode="wb")

pickle.dump(lst, f)

 

f = open("cat", mode="rb")

ll = pickle.load(f)

for el in ll:   

el.catchMouse()

记住⼀点, pickle序列化的内容是二进制的内容(bytes) 不是给⼈看的,给机器看的。

    2. shelve 小型数据库, redis, mongodb, dict

        当成字典来用

        writeback=True 用来执行修改操作,删除或修改都用它 不用不改变

 

    3. json 以前用xml  先在用json

        json.dumps() 把字典转换成json字符串

        json.loads() 把json字符串转化成字典

 

        json.dump() 把字典转换成json字符串. 写入到文件

        json.load() 把文件中的json字符串读取. 转化成字典

 

        default = func()  把对象转化成字典. 需要自己写函数转换过程

        object_hook = func() 把字典转化成对象. 需要自己写函数转换过程

        ensure_ascii = False  可以处理中文

 

  注意. 我们可以向同一个文件中写⼊多个json串. 但是读不⾏。

在读取的时候是⽆法正常读取的. 那如何解决呢? 两套方案. 方案一. 把所有的内容准备好统一 进⾏行写入和读取. 但这样处理, 如果数据量小还好. 数据量大的话, 就不够友好了. 方案二. 不用 dump. 改用dumps和loads. 对每⼀⾏分别进⾏处理.

 1 import json 
 2 lst = [{"a": 1}, {"b": 2}, {"c": 3}] 
 3 # 写⼊
 4 f = open("test.json", mode="w", encoding="utf-8")
 5 for el in lst:    
 6     s = json.dumps(el, ensure_ascii=True) + "\n"    
 7     f.write(s)
 8 f.close() 
 9 
10 # 读取 
11 f = open("test.json", mode="r", encoding="utf-8") 
12 for line in f:   
13     dic = json.loads(line.strip())    
14 print(dic)
15 f.close()

 

 

  4.configparser 处理windows配置文件的  dict

  适用于配置文件的格式与windows ini文件类似

  可以包含一个或多个节(section)每个节 可以有多个参数(键=值).

转载于:https://www.cnblogs.com/honghong7725/p/9974914.html

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

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

相关文章

基于Redis实现分布式锁,避免重复执行定时任务

Spring提供了定时任务的功能,但是在多个实例的集群中,会出现定时任务重复执行多次的情况。 使用Qutaz框架自带的分布式定时任务可以很好的解决这个问题,但是讲道理功能有些过于强大,对于需求不高,乃至可以一定程度上允…

Input Director使用一个键盘和鼠标即可控制多台Windows计算机

The problem is having two or more PC’s and having to go back and forth between workstation. Input Director solves the problem by allowing you to control multiple Windows systems with only one keyboard and mouse on the Master PC. 问题是拥有两台或更多台PC…

viper4android 生效,另一种让V4a音效在Poweramp上生效的方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼本人按照网上的方法进Poweramp设置—音频—高级选项—直接音量控制—不打勾后 V4a音效没有生效 我又把V4a音效兼容模式里的正常模式切换成为兼容模式 结果还是不行......后来我郁闷了三天三夜有一天我去了v4a官网论坛看到了admin帖…

[学习笔记]状压dp

状压 \(dp\) 1、[SDOI2009]Bill的挑战 \(f[i][j]\) 表示匹配到字符串的第 \(i\) 位状态为 \(j\) 的方案数 那么方程就很明显了&#xff0c;每次枚举第 \(i\) 位的字母 \(alpha\) 然后 \(O(n)\) 判断就好了 时间复杂度 \(O(26Tlen2^nn)\) \(Code\ Below:\) #include <bits/st…

excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

excel导入csv文件Microsoft Excel will automatically convert data columns into the format that it thinks is best when opening comma-separated data files. For those of us that don’t want our data changed, we can change that behavior. Microsoft Excel将在打开…

MySQL之进化篇

MySQL之实用篇 MySQL之牛刀小试 子查询是指出现在其他SQL语句内的SELECT子句. 例如: SELECT * FROM t1 WHERE column1 (SELECT column2 FROM t2) 其中 SELECT * FRIN t1 称为outerQuery SELECT column2 FROM t2 称为subQuery 注意:子查询指嵌套在查询内部,且必须始终出现在圆括…

android 9.0新ui,SystemUI分析(Android9.0)

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;一、SystemUI组成SystemUI是Android的系统界面&#xff0c;包括状态栏statusbar、锁屏keyboard、任务列表recents等等&#xff0c;都继承于SystemUI这个类&#xf…

WMI技术介绍和应用——WMI概述

https://blog.csdn.net/breaksoftware/article/details/8424317转载于:https://www.cnblogs.com/diyunpeng/p/9982885.html

解决App启动时白屏的问题

第一次 03-25 11:02:34.431 6908-6908/com.newenergyjinfu.jytz D/App: before_onCreate: 239 03-25 11:02:34.513 6908-6908/com.newenergyjinfu.jytz D/App: after_initOkGo( initPicasso): 316 03-25 11:02:34.570 6908-6908/com.newenergyjinfu.jytz D/App: after_ J…

chromebook刷机_如何为不支持Chrome操作系统的网站欺骗Chromebook用户代理

chromebook刷机Not all browsers handle websites the same, and if they don’t support your operating system or browser, you could be denied access. Luckily, you can spoof the user agent on Chrome OS to make it look like you use a completely different system.…

什么时候可以升级HarmonyOS,华为鸿蒙OS即将迎来升级 手机版本或仍需时间

原标题&#xff1a;华为鸿蒙OS即将迎来升级 手机版本或仍需时间在2019年的华为开发者大会上&#xff0c;华为消费者业务CEO余承东正式对外发布了HarmonyOS。时隔一年后&#xff0c;华为开发者大会2020即将拉开帷幕。此次大会&#xff0c;HarmonyOS无疑仍会是重头戏之一&#xf…

Shell_mysql命令以及将数据导入Mysql数据库

连接MYSQL数据库 mysql -h${db_ip} -u${db_user} -p${db_pawd} -P${db_port} -D${db_name} -s -e "${sql}" db_ip&#xff1a;主机地址 db_user &#xff1a;数据库用户名 db_pwd&#xff1a;密码 db_port&#xff1a;端口号 db_name&#xff1a;数据库名称 sql&…

cocos android-1,cocos2dx在windows下开发,编译到android上(1)

转自&#xff1a;http://www.2cto.com/kf/201205/130697.html下面我给大家介绍下&#xff0c;用vs2010开发cocos2dx&#xff0c;然后如何使其编译到android上。步骤如下&#xff1a;1、必要条件&#xff0c;你的eclipse能把代码编译到安卓手机或虚拟机上&#xff0c;如果这一步…

中药ppi网络图太杂乱_太杂乱了吗? 这是您的iPhone,iPad,Android或台式机的15张简约壁纸...

中药ppi网络图太杂乱Busy wallpaper images don’t work very well on your iPhone, iPad, or any device where you need to have lots of icons on the screen. Here’s a set of minimalistic wallpaper images that won’t clutter up your desktop. 繁忙的墙纸图像在iPhon…

算法61---两个字符串的最小ASCII删除和【动态规划】

一、题目&#xff1a; 给定两个字符串s1, s2&#xff0c;找到使两个字符串相等所需删除字符的ASCII值的最小和。 示例 1: 输入: s1 "sea", s2 "eat" 输出: 231 解释: 在 "sea" 中删除 "s" 并将 "s" 的值(115)加入总和。 在…

android设置时间widget,【Android】时间与日期Widget(DatePicker 与 TimePicker)

public class Activity01 extends Activity{TextViewm_TextView;//声明dataPickerDatePickerm_DatePicker;//声明TimePickerTimePickerm_TimePicker;Button m_dpButton;Button m_tpButton;//java中的Calendar类Calendar c;/** Called when the activity is first created. */Ov…

初学者java学习计划_初学者:计划在Windows 7 Media Center中录制直播电视的时间

初学者java学习计划If you’re a new user to Windows 7 Media Center you know it can act as a DVR and pause or record Live TV. You can set up a schedule for it to record your favorite TV programs as well. 如果您是Windows 7 Media Center的新用户&#xff0c;则知…

双数据源配置

从此抄录&#xff1a;https://blog.csdn.net/ll535299/article/details/78203634 1、先配置两个数据源&#xff0c;附上主要代码&#xff0c;给自己回忆&#xff0c;详解见开头链接 <!-- 配置数据源 --> <bean id"szDS" class"com.alibaba.druid.pool.…

如何在Office 2007中查看关于对话框和版本信息

One of our favorite readers wrote in today asking how to tell if his Word 2007 installation was running Service Pack 1, since he couldn’t find the About dialog, which got me thinking… I bet most people don’t know where it is! 我们最喜欢的一位读者今天写信…

windows全局热键_在Windows中创建快捷方式或热键以清除剪贴板

windows全局热键Have you ever copied something to the clipboard that you don’t want to leave there in case somebody else is going to use your computer? Sure, you can copy something else to the clipboard real quick, but can’t you just make a shortcut or h…