常用模块一

本文深入探讨Python标准库中的高级模块使用,包括collections、time、random、os、sys等,解析具名元组、队列、双端队列、有序字典、默认字典、计数器的运用,以及时间、随机数、文件操作和系统交互的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 collections模块

1namedtuple(具名元组)from collections import namedtuple


# point = namedtuple("长方形","chang kuan gao")  # 第二个参数可以是字符串,每个字符串可以用空格隔开
point = namedtuple("长方形",["chang","kuan","gao"])  # 第二个可以是可迭代类型
ret = point(100,200,300)
print(ret)
print(ret.chang)
print(ret.kuan)
print(ret.gao)

# 打印结果
# 长方形(chang=100, kuan=200, gao=300)
# 100
# 200
# 300

补充 队列(先进先出)

import queue

"""
遵循先进先出
添值用put()
取值用get()
"""
q = queue.Queue()  # 注意queue后面跟的方法第一个字母大写
q.put(1)
q.put(2)
q.put(3)


print(q.get())
print(q.get())
print(q.get())

#返回结果

 #1
    #2
    #3

2 deaue(双端队列)左端可以存值取值,右端也可以存值取值

与上面的队列相比,双端队列他的取值存值是通过append(右边添加),appendleft(左边泰添加),pop(右边删除),popleft(左边删除)

而普通队列是通过put(存值),get(取值)

from collections import deque


q = deque([1,2,3,4,5,6])
q.appendleft(1)
q.appendleft(1)
q.appendleft(1)
q.appendleft(1)
q.appendleft(1)
q.appendleft(2)
q.appendleft(2)
q.appendleft(2)
q.appendleft(2)
q.appendleft(2)
q.insert(1,23)
q.insert(1,23)
q.insert(1,23)
q.insert(1,23)
q.insert(1,23)
q.insert(1,23)
print(q.pop())
print(q.pop())
print(q.pop())
print(q.pop())
print(q.pop())
print(q.popleft())
print(q.popleft())
print(q.popleft())
print(q.popleft())
print(q.popleft())
print(q.popleft())
print(q)

注意;双端队列是可以在指定位置上添加值和取值的

对列的特点是只能在首尾添加值和取值,双端队列的缺点就是在指定位置可以存值,和取值

 

3 OrderedDict(有序字典)(注意;O大写D大写)模块

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict

from collections import OrderedDict

dic = {'a':'1','b':'2','c':'3'}
print(dic)  # 在终端打印出来的结果,是无序的

ret = OrderedDict(dic)
print(ret)  # 在终端打印出来的是有序的
ret1 = OrderedDict()  # 创建一个有序的字典
ret1["x"] = 1
ret1['y'] = 2
ret1['z'] = 3
for key in ret1:
    print(key)

print(ret1)

打印结果
# {'a': '1', 'b': '2', 'c': '3'}
# OrderedDict([('a', '1'), ('b', '2'), ('c', '3')])
# x
# y
# z
# OrderedDict([('x', 1), ('y', 2), ('z', 3)])

4 defaultdict(

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {'k1': 大于66 'k2': 小于66}

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字典解决方法

5 Counter(Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。)

c = Counter('abcdeabcdabcaba')
print c
输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

2 时间模块

1 time.time()(时间戳)

2 time.strftime()(格式化时间)

%Y  年

%m  月

%d  天

%H  时

%M  分

%S  秒

之间的格式符号可以靠自己喜欢来写

print(time.strftime('%Y-%m-%d'))
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y-%m-%d %X'))  # %X等价于%H:%M:%S
print(time.strftime('%H:%M'))
print(time.strftime('%Y/%m'))

3 localtime()(结构时间)

转换关系

import time
print(time.localtime(time.time()))
res = time.localtime(time.time())
print(time.time())
print(time.mktime(res))
print(time.strftime('%Y-%m',time.localtime()))  # 以年-月的形式转换出格式化模式
print(time.strptime(time.strftime('%Y-%m',time.localtime()),'%Y-%m'))  # 转换为结构模式

4 datetime模块

date.today()年月日

datetime.today()年月日时分秒

 

import datetime
print(datetime.date.today())  # date>>>:年月日
print(datetime.datetime.today())  # datetime>>>:年月日 时分秒
res = datetime.date.today()
res1 = datetime.datetime.today()
print(res.year)
print(res.month)
print(res.day)
print(res.weekday())

3 random模块

randomint(n,b)随机的取一个数字,包含首尾

 print(random.randint(1,6))

random() 随机的取0到1的小数

print(random.random())

choice([....]) 摇号,随机的从列表中取一个数 

print(random.choice([1,2,3,4,5,6]))

shuffle() 打乱顺序,洗牌

ret3 =[1,2,3,4,5,6,7]
random.shuffle(ret3)
print(ret3)

验证码

import random
def func(n):
    count = ""
    for i in range(n):
        upper_str = chr(random.randint(65,90))
        lower_str = chr(random.randint(97,122))
        randon_int = str(random.randint(0,9))
        count += random.choice([upper_str,lower_str,randon_int])
    return count

n = func(4)
print(n)

4 os 模块

os.psah.dirname(__file__)    将路径调到本文件的上一层

os.path,join()  第一个参数是路径,第二个参数是你想要的拼的路径

os.mkdir()  自动创建文件

os.path.exists()  判断文件是否存在,判断文件夹是否存在

os.path.isfile()  判断文件是否存在

os.rmdir()  删除空文件

os.getcwd()  就向乌班图的cd

os.chdir()  切换到当前的路径

os.path.getsize()  获取文件大小(字节数)

5 sys模块

import sys
# sys.path.append()  # 将某个路径添加到系统的环境变量中
# print(sys.platform)
# print(sys.version)  # python解释器的版本

print(sys.argv)  # 命令行启动文件 可以做身份的验证
if len(sys.argv) <= 1:
    print('请输入用户名和密码')
else:
    username = sys.argv[1]
    password = sys.argv[2]
    if username == 'jason' and password == '123':
        print('欢迎使用')
        # 当前这个py文件逻辑代码
    else:
        print('用户不存在 无法执行当前文件')

6 序列化,和反序列化(json,pickle)模块

1 json(整形,字符串,列表,字典,布尔,元组准换成列表可以与其他语言匹配数据)

doups  将数据类型转换成json内型数据

loads  将json型数据转换成源类型

doup  可以在文本模式将数据类型转换成json类型存入文件中

load  可以在文本模式将j文本中的json类型存数据转换成原文件

2 pickle(python一切数据类型,只能在python中用)

方法与上面json一样

用pickle打开文件必须是以b模式打开

7 subprocess

1.用户通过网络连接上了你的这台电脑
2.用户输入相应的命令 基于网络发送给了你这台电脑上某个程序
3.获取用户命令 里面subprocess执行该用户命令
4.将执行结果再基于网络发送给用户
这样就实现 用户远程操作你这台电脑的操作

while True:
    cmd = input('cmd>>>:').strip()
    import subprocess
    obj = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    # print(obj)
    print('正确命令返回的结果stdout',obj.stdout.read().decode('gbk'))
    print('错误命令返回的提示信息stderr',obj.stderr.read().decode('gbk'))

  

 

转载于:https://www.cnblogs.com/cherish937426/p/11209711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值