• 模块


    1.序列化

    1.json
    文件: 写 json.dump(对象,文件) mode = "a"   读 json.load(文件) mode = "r"
    字符串:dump(对象):将对象序列化成字符串   loads(字符串):将字符串序列化成对象
            
    import json
    l = [1,2,3,7,5]
    print(json.dumps(l),type(json.dumps(l)))#[1, 2, 3, 7, 5] <class 'str'>
    s = json.dumps(l)
    print(json.loads(s),type(json.loads(s)))#[1, 2, 3, 7, 5] <class 'list'>
    
    读写文件
    import json
    l = [1,2,3,4,8]
    f = open("info",mode="a",encoding="utf-8")
    json.dump(l,f)
    f.close()
    
    f = open("info",mode="r",encoding="utf-8")
    print(json.load(f))
    
    
    字典
    字典中有中文时,想读出中文需加ensure_ascii=False
    dic = {"h":3,"姓名":"oooo"}
    f = open("info1","a",encoding="utf-8")
    json.dump(dic,f,ensure_ascii=False)
    
    f = open("info1","r",encoding="utf-8")
    print(json.load(f))
    
    读写多个文件
    f = open("info","a",encoding="utf-8")
    str1 = json.dumps(l1,ensure_ascii=False)
    f.write(str1+"
    ")
    str2 = json.dumps(l2,ensure_ascii=False)
    f.write(str2+"
    ")
    str3 = json.dumps(l3,ensure_ascii=False)
    f.write(str3+"
    ")
    f.close()
    f = open("info","r",encoding="utf-8")
    for i in f:
        print(json.loads((i)))
        
        
    2.pickle
    dumps:将对象转化为bytes类型,类似于字节
    pickle.dumps(对象) 返回类似于字节
    
    loads将bytes序列化为对象
    pick.loads(字节)
    
    文件:dump 写 wb
         loadds 读 rb
    import pickle
    s = pickle.dumps(l1)
    l2 = pickle.loads(s)
    print(l2)
    f = open("info","wb")
    pickle.dump(l1,f)
    f.close()
    
    写多个
    l1 = [1,2,2,3,6,5,777,"宝元a"]
    l2 = [1,2,3,6,5,"搜索你家"]
    l3 = [1,9,3,6,5,]
    import pickle
    f = open("info","wb")
    pickle.dump(l1,f)
    pickle.dump(l2,f)
    pickle.dump(l3,f)
    f.close()
    读多个
    f = open("info","rb")
    print(pickle.load(f))
    

    2. o s模块

    os模块是与操作系统交互的一个接口
    1.工作目录
    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径  **** 
    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
    os.curdir  返回当前目录: ('.')
    os.pardir  获取当前目录的父目录字符串名:('..') 
    
    2.文件夹相关
    os.makedirs('dirname1/dirname2')    可生成多层递归目录  ***
    os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 ***
    os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname ***
    os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname ***
    os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 **
    
    3.文件相关
    os.remove()  删除一个文件  ***
    os.rename("oldname","newname")  重命名文件/目录  ***
    os.stat('path/filename')  获取文件/目录信息 **
    
    4.路径相关
    os.path.abspath(path) 返回path规范化的绝对路径  ***
    os.path.split(path) 将path分割成目录和文件名二元组返回 ***
    os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素  **
    os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值,即os.path.split(path)的第二个元素。 **
    os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False  ***
    os.path.isabs(path)  如果path是绝对路径,返回True  **
    os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False  ***
    os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False  ***
    os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 ***
    os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间  **
    os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间  **
    os.path.getsize(path) 返回path的大小 ***
    

    3. sys

    sys -- 与python解释器交互的接口
    import sys
    if sys.argv[-1] == "alex":
        print("dsb")
    else:
        print("李业dsb")
    print(sys.argv[-1])  # *** 当前文件运行['F:/s24/day17/06 sys.py']
    
    
    import sys
    print(sys.exit(1))   #
    
    import sys
    print(sys.version)  # 获取解释器版本
    
    import sys
    print(sys.path)     # 添加自定义模块查找路径 *****
    
    import sys
    print(sys.platform)   # *** 区分操作系统然后进行相关逻辑操作
    

    4. h a s h l i b

     加密方式 md5,sha1,sha256,sha512
    1.只要明文相同密文就是相同的
    2.只要明文不相同密文就是不相同的
    3.不能反逆(不能解密)
    最常用是的md5,平时加密的时候使用sha1
    加密 md5
    import hashlib
    md5 = hashlib.md5()
    md5.update("alex".encode("utf-8"))
    print(md5.hexdigest())
    
    固定加盐
    import hashlib
    md5 = hashlib.md5("uuu".encode("utf-8"))
    md5.update("alex".encode("utf-8"))
    print(md5.hexdigest())
    
    动态加盐(安全性能提高)
    import hashlib
    uername = input("账号")
    password = input("密码")
    ret = hashlib.md5(uername.encode("utf-8"))
    ret.update(password.encode("utf-8"))
    print(ret.hexdigest())
    
    

    5. c o l l e c t i o n s

    在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
    1.namedtuple: 生成可以使用名字来访问元素内容的tuple
    2.deque: 双端队列,可以快速的从另外一侧追加和推出对象
    3.Counter: 计数器,主要用来计数
    4.OrderedDict: 有序字典
    5.defaultdict: 带有默认值的字典
    
    有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66 , 'k2': 小于66}
    li = [11,22,33,44,55,77,88,99,90]
    result = {}
    for row in li:
        if row > 66:
            if 'key1' not in result:
                result['key1'] = []
            result['key1'].append(row)
        else:
            if 'key2' not in result:
                result['key2'] = []
            result['key2'].append(row)
    print(result)
    
    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)
    
            
    from collections import Counter
    c = Counter("csdcsdcsdcsdcsdcs")
    print(c) 
    #计算次数
    
  • 相关阅读:
    互联网协议入门
    C++解决约瑟夫环(史上最清晰)
    C# 最快的逐一打印斐波那契结果数列的算法
    二叉树的遍历(转载)
    C# 多线程join的用法,等待多个子线程结束后再执行主线程
    剖丁解牛式的快速排序分析
    用CTE结合排名函数rank()删除某列值重复的记录
    Http 头部属性详解
    C# 冒泡排序
    设计模式七大原则之依赖倒转原则
  • 原文地址:https://www.cnblogs.com/tangjian219/p/11355182.html
Copyright © 2020-2023  润新知