zoukankan      html  css  js  c++  java
  • Python 常用模块

    一、json模块

    json(JavaScript Object Notation)JavaScript对象标记,JS对象表示法,JS的数据格式。

    目前(今天2018年3月31日),从前端传过来的数据,大部分是json格式,后端需要进行转换。就是js和python进行交互。

    (一).注意事项

    (1).json对象必须是个字符串

    (2).json对象中,只要代表字符串,必须要用双引号。

    (3).json对象中,不能出现单引号。同2

    (二).几个会常用的方法

    (1).json.dumps(dict_object) 将python的字典对象,转换为json对象

    (2).json.loads(json_object) 将json对象,转换成python的字典

    (3).json.dump(dict_object, open("file_name.json","w")) 将字典转换成json对象,并保存为json文件

    (4).json.load(open("file_name.json")) 直接将文件中的json对象,转换成字典

    二、os模块

    目录及文件操作,与linux命令一样的效果。

    比如:

    os.listdir(path) -> ls

    os.makedirs("name") -> mkdir

    (一).练习:

    编写一个函数,遍历路径下,所有的目录和子目录

    """
    编写一个函数,遍历路径下,所有的目录和子目录
    """
    
    import os
    
    
    def list_all_file(file_path):
        paths = os.listdir(file_path)
        for each in paths:
            path_next = os.path.join(file_path, each)
            if os.path.isdir(path_next):
                list_all_file(path_next)
            else:
                print(os.path.join(file_path, path_next))
    
    
    list_all_file(r"D:python_local")
    View Code

    三、datetime模块

    具体用到,具体google it

    注意点:

    (一).strptime() 前后的格式要一样。括号中,前面的时间字符串中是"-",那么后面要格式化的字符串也得是"-"。

    (二).案例,输出一个带时区的日期时间格式:

    import datetime
    
    
    def utc_now():
        dt = datetime.datetime.now()
        utc_time = datetime.datetime(dt.year, dt.month, dt.day,
                                     dt.hour, dt.minute, dt.second, dt.microsecond,
                                     tzinfo=datetime.timezone.utc)
        return utc_time
    
    
    print(utc_now())
    # 2018-07-06 16:59:50.256989+00:00
    View Code

    四、base64

    是字符编码,不是加密。

    网页上的图片、影音都是二进制文件。

    现在图片一般不会转成base64了,一大串代码,前端还不拿刀来砍死你 —.—

    五、日志模块

    就是写日记,记录信息。

    补充练习:

    """
    OOP之生产者消费者模型
    
    用到一个模块 : 线程
    
    需求 : 吃包子
    有吃包子的人、有做包子的人
    我要让吃包子和做包子同时进行,让他们达到一个相对平衡
    """
    
    import time
    import threading
    
    
    class PersonEatBaozi(threading.Thread):
        """
        吃包子的人
        直接继承threading.Thread
        """
    
        def run(self):
            while 1:
                global count
                if con.acquire():  # 上锁
                    if count < 100:
                        con.wait()  # 让线程等待着
                    else:
                        count -= 30
                        print("{}老王吃了30个包子,还剩{}个包子".format(self.name, str(count)))
                        con.notify()  # 通知其他线程,去抢线程
                    con.release()  # 解锁
                time.sleep(1)
    
    
    class PersonMakeBaozi(threading.Thread):
        """做包子的人"""
    
        def run(self):
            while 1:
                global count
                if con.acquire():
                    if count > 1000:
                        con.wait()
                    else:
                        count += 100
                        print("{}岛歌做了100个包子,共有{}个包子".format(self.name, str(count)))
                        con.notify()
                    con.release()
                time.sleep(1)
    
    
    if __name__ == '__main__':
        count = 500
        con = threading.Condition()  # 开启线程
    
        for i in range(2):
            # 设置2个做包子的人
            pm = PersonMakeBaozi()
            pm.start()  # 启动线程
    
        for i in range(5):
            # 设置5个吃货
            pe = PersonEatBaozi()
            pe.start()
    View Code
  • 相关阅读:
    Go 函数
    Go 基础
    Emmet使用详解
    Linux系统安装7.4
    NTP时间服务
    部署Java和Tomcat
    Linux用户管理
    Linux定时任务
    Linux正则详解
    Linux目录结构
  • 原文地址:https://www.cnblogs.com/xuanlv-0413/p/9279045.html
Copyright © 2011-2022 走看看