zoukankan      html  css  js  c++  java
  • python中软件开发规范,模块,序列化随笔

    1.软件开发规范

    首先:

    当代码都存放在一个py文件中时会导致

    1.不便于管理,修改,增加

    2.可读性差

    3.加载速度慢

    划分文件
    1.启动文件(启动接口)--starts文件放bin文件里
    2.公共文件(大家需要的功能)---放lib文件夹里
    3.配置文件(静态文件)变量--放conf文件夹里
    4.主逻辑(核心)---函数,类等等,src.py--放core文件夹里
    5.用户相关数据--账号密码等文件 register--放db文件夹里
    6.日志----记录主要信息,记录开发人员的行为---logg.log--放log文件夹里
    高内聚----前面定义模块名字,调用
    regist = r"模块地址"

    2.序列化 json 和 pickle

    json

    将数据类型转换成字符串---序列化json.dumps

    将字符串转换成原数据类型--反序列化json loads

    可以序列:字典,列表, (元组序列后变成列表)

     

    dumps loads----用于网络传输
    dump load用于文件存储
    dumps loads------
    dic = '{"key":1}'
    import json
    s = json.dumps(dic)
    print(s,type(s))----转成字符串
    d = json.loads(s)
    print(d,type(d))

    list = [1,2,3,4]
    import json
    s = json.dumps(list)--序列
    l = json.loads(s)反序列
    print(l,type(l))
    dump load-------
    dic = {"key":1}
    print(json.dump(dic,open("a","a",encoding="utf-8")))将源数据类型转换成字符串,写入到文件中
    print(json.load(open("a","r",encoding="utf-8"))['key'])将文件中字符串转成源数据类型

    dic = {"key":1}
    f = open("a","a",encoding="utf-8")
    f.write(json.dumps(dic)+"\n")
    f1 = open("a","r",encoding="utf-8")
    for i in f1:
    print(json.load(i),type(json.loads(i)))
    dic = {"key":"宝元"}
    print(json.dumps(dic,ensure_ascii=False))
    print(json.dumps(dic,ensure_ascii=False,sort_keys=True))排序

    pickle:

    pickle---python有,几乎可以序列python中所有数据类型,匿名函数不能序列
    import pickle
    print(pickle.dumps((1,2,3,4,5)))

    def func():
    print(1)
    a = pickle.dumps(func)将源数据类型转换成类似字节的内容
    print(pickle.loads(a))将类似字节的内容转换成原数据类型

    os文件夹,文件路径

    工作路径:
    import os---和操作系统做交互,给操作系统发指令
    print(os.getcwd())---获取当前文件工作路径
    os.chdir("绝对路径")---路径切换
    print(os.getcwd)

    文件夹
    os.mkedir("名字")创建文件夹
    os.rmdir("名字")删除指定文件夹
    os.makedirs('a/b/c')递归创建文件夹
    os.removedirs('a1/a2/a3')递归删除文件夹
    print(os.listdir(r'绝对路径'))查看当前文件夹下所有内容(列表显示)

    文件
    os.remove(r"绝对路径")删除文件,彻底删除,找不到
    os.rename()重命名
    os.path.getsize(r"绝对路径")获取文件大小

    路径
    os.path.abspath("相对路径")返回的是绝对路径***
    os.path.split(r"绝对路径") 将路径分割成一个路径和一个文件名
    os.path.dirname(r"绝对路径")获取到父目录***
    os.path.basename(r"绝对路径")获取到路径的名字
    os.path.join("D:\Python","day12","test")路径拼接****

    判断
    os.path.exists("blog")判断路径是否存在
    os.path.isabs(r"")不管存不存在,判断绝对路径是否存在
    os.path.isdir(r"")判断是否是文件夹
    os.path.isfile(r"")判断是不是文件

     

  • 相关阅读:
    30岁的程序猿坐的太久,也要用一下脑子
    HIPO图
    CMake入门(二)
    hdu1711 Number Sequence
    EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!
    JS框架~Angularjs
    将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)
    SignalR实现服务器与客户端的实时通信
    基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化
    [置顶] 电视机顶盒搜台原理和方法简析
  • 原文地址:https://www.cnblogs.com/yecanglan/p/11401860.html
Copyright © 2011-2022 走看看