内置模块

常用内置模块collections模块

1.具名元组

from collections import namedtuple

#表示二位坐标系
n1 = namedtuple('车', ('num name'))  # 可以用空格分开表示
res1 =n1(1, '轿车')
res2 =n1(2,'老爷车')
print(res1,res2)
print(res1.num, res2.name)

队列
	队列与堆栈
    	队列:先进先出
        堆栈:先进后出

2.deque

from collections import deque

d = deque([1,2,3])
print(d.pop())
print(d.popleft())

3.defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]

my_dict = {}

for value in  values:
    if value>66:
        if my_dict.has_key('k1'):
            my_dict['k1'].append(value)
        else:
            my_dict['k1'] = [value]
    else:
        if my_dict.has_key('k2'):
            my_dict['k2'].append(value)
        else:
            my_dict['k2'] = [value]

原生字典解决方法


from collections import defaultdict

values = [11, 22, 33,44,55,66,77,88,99,90]

my_dict = defaultdict(list)

for value in  values:
    if value>66:
        my_dict['k1'].append(value)
    else:
        my_dict['k2'].append(value)

defaultdict字典解决方法

4.ordereddict顺序字典

>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])


>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> od.keys() # 按照插入的Key的顺序返回
['z', 'y', 'x']

5.counter

from collections import Counter

c = Counter('asdhjgajksd')
print(c)

常用内置模块时间模块

1.time

https://images2015.cnblogs.com/blog/827651/201707/827651-20170724144151992-1508626640.png

import time
"""
三种时间表现形式
	1.时间戳
		秒数
	2.结构化时间
		主要是给计算机看的 人看不适应
	3.格式化时间
		主要是给人看的
"""
time.time()  # 获取当前时间戳

time.localtime()
'''
time.struct_time(tm_year=2022, tm_mon=10, tm_mday=19, tm_hour=11, tm_min=32, tm_sec=50, tm_wday=2, tm_yday=292, tm_isdst=0)
'''


time.strftime("%Y-%m-%d %H:%M:%S")

time.strftime("%Y-%m-%d %X")

time.sleep(1)  # 运行到这停止多少秒

2.datetime

https://images2015.cnblogs.com/blog/827651/201707/827651-20170724144235883-1963884021.pn

from datetime import time,datetime,data

print(datetime.now())
print(datetime.today())
print(datetime.utcnow()) #
print(datetime.strftime())  # 



'''
datetime 年月日 时分秒
date 年月日
time 时分秒
'''
data.now()  # 时分秒

print(datetime.strptime('2022-10-19','%Y-%m-%d'))
print(datetime.strftime(datetime.today(),'%Y-%m-%d'))
# print(datetime.time().day)
print(time.strptime('2022-10-19', '%Y-%m-%d'))
print(datetime.today()+timedelta(weeks=1))



datetime.timedelta(days = 3)



date

print(date.today())
print(date.today().strftime('%Y-%m-%d'))
print(date.today().timetuple())  # 结构化时间

print(date.today().year)

print(date.today().replace(2019))  # 替换时间

print(date.today().ctime())
print(date.today().toordinal())

print(date.today().weekday())


常用内置模块随机数模块

random 模块
import random

random.random()  # 返回一个0~1之间的小数

random.randint(1,10)  # 返回一个顾头顾尾的,随机一个整数

random.randrange(1,10,2) # 跟randint类似,但是randrange可以有步长

random.choice([1,2,3]) # 可迭代对象随机抽取一个返回

random.choices([1,2,3,4,5,6])#返回抽取的数据,以列表套原数据类型返回

random.simple('akjsghd',2)#返回抽取的指定个数数据,以列表套原数据类型返回

l1= [1,2,3,4]
random.shuffle(l1) #放可变数据类型,可以随机打乱顺序,然后返回

'''产生图片验证码: 每一位都可以是大写字母 小写字母 数字  4位'''

import string
import random

def get_code(num):
    code = ''
    for i in range(num):
        data = string.ascii_lowercase + string.ascii_uppercase + string.digits
        code += random.choice(data)
    return code


print(get_code(10))
        
        
        
        
        

string模块

import string 

string.ascii_lowercase  # 全部小写字母
string.ascii_uppercase	# 全部大写字母
string.digits	#0-9数字

os模块(重要)

import os
#与操作系统打交道
#创建文件
os.mkdir('d1')  #创建文件夹,创建单层
os.makedirs('d1\d2\d3') # 可以创建多层

#删除文件夹
os.rmdir('di')  # 删除文件夹删除单层
os.removedirs('d1\d2\d3') # 可以删除多层空文件夹,如果文件夹有文件则不会删除

#可指定查看文件夹内容
os.listdir(r'c:\\')  # 查看指定路径下一级文件
os.walk(r'E:\pythonworkftp\16')  # 查看指定路径下所有层级文件,生成器类型

#删除指定文件
os.remove('tt2.py')

#获取当前文件所在项目环境变量文件
os.getcwd()

#切换系统环境变量文件夹
os.chdir(r'E:\pythonworkftp\16\d1\d2')

#获取当前用户登录姓名
os.getlogin()

#重名命文件
os.rename(r'E:\pythonworkftp\16\d1\a.py',r'E:\pythonworkftp\16\d1\d2\a.py')

print(os.path.dirname(r'E:\pythonworkftp\16\d1\d2\a.py'))  #查看当前文件所在的文件夹

print(os.path.abspath(r'd1\d2\a.py'))  #查看文件的绝对路径

print(os.path.exists(r'E:\pythonworkftp\16\d1\d2\a.py'))  # 查看文件或文件夹是否存在

print(os.path.join(r"E:\pythonworkftp\16\d1\d2",'a'))  #路径拼接,不要手动拼接路径

print(os.path.isfile(r'E:\pythonworkftp\16\d1\d2\a.py'))  # 查看文件是否是文件

print(os.path.sep)  # 返回运行计算机文件分隔符

print(os.path.getsize(r'E:\pythonworkftp\16\d1\d2\a.py'))  # 获取文件大小字节类型

print(os.stat(r'E:\pythonworkftp\16\d1\d2\a.py').st_size)  # 获取文件大小字节类型

print(os.path.getmtime(r'E:\pythonworkftp\16\d1\d2\a.py')) # 获取文件创建时间戳


sys模块

import sys
#与解释器打交道
print(sys.path)  # 执行文件系统环境
print(sys.version)
# sys.exit() # 退出系统

print(sys.getrecursionlimit())  # 获取最大递归深度

print(sys.setrecursionlimit(2000))  # 设置最大递归深度
print(sys.getrecursionlimit())

print(sys.argv)  # 一个列表第一个为获取数据的当前文件绝对路径

print(sys.getwindowsversion())  # 获取系统详细版本

json模块(重要)

json模块也称为序列化模块 序列化可以打破语言限制实现不同编程语言之间数据交互

json格式数据作用

json格式数据的形式
	字符串类型并且引号都是双引号
    
json相关操作
	针对数据
    
    json.dumps() #反序列化
    json.loads() # 序列化对象
    
    针对文件
    json.dump() 
    json.load()
    

json模块补充

import json

d = {'name': 'jason老师', 'pwd': 123}
res = json.dumps(d)  # 针对中文会自动转码  我们在查看的时候不方便
print(res)
res = json.dumps(d, ensure_ascii=False)  # 取消转码
print(res)

json模块实战

用户登录注册功能
import os
import json

# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__)  # D:/pythonProject03/day19
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db')  # D:/pythonProject03/day19/db
# 3.创建db目录
if not os.path.isdir(db_dir):
    os.mkdir(db_dir)
# 4.获取用户数据
# username = input('username>>>:').strip()
# password = input('password>>>:').strip()
# 4.1.判断用户名是否已存在
# print(os.listdir(db_dir))  # ['jason.json', 'kevin.json', 'tony.json']  方式1
# user_file_path = os.path.join(db_dir, f'{username}.json')  方式2
# 5.构造用户字典
# user_dict = {
#     'username': username,
#     'password': password,
#     'account': 15000,  # 账户余额
#     'shop_car': []  # 购物车
# }
# 6.拼接存储用户数据的文件路径
# user_file_path = os.path.join(db_dir, f'{username}.json')  # D:/pythonProject03/day19/db/jason.json
# 7.写入文件数据
# with open(user_file_path,'w',encoding='utf8') as f:
#     json.dump(user_dict, f)
username = input('username>>>:').strip()
# 1.拼接上述用户名组成的文件路径
target_user_file_path = os.path.join(db_dir, f'{username}.json')
if not os.path.isfile(target_user_file_path):
    print('你赶紧滚蛋 用户名都不对 搞什么飞机')
else:
    password = input('password>>>:').strip()
    # 2.获取用户真实数据字典
    with open(target_user_file_path,'r',encoding='utf8') as f:
        real_user_dict = json.load(f)
    if password == real_user_dict.get('password'):
        print('登录成功')
    else:
        print('密码错误')
posted @ 2022-10-19 19:28  clever-cat  阅读(33)  评论(3编辑  收藏  举报