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

    一、json模块

    json(JavaScript Object Notation)JavaScript对象标记,JS对象表示法,JS的数据格式。一种轻量级的数据交换格式,方便机器进行解析和生产,适用于进行数据交互的场景,比如网站前端与后端之间的数据交互。

    从前端传过来的数据,大部分是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对象,转换成字典

    (三).几个常用的属性

    (1).json.dumps(ensure_ascii=False, indent=4),ensure_ascii=False,让json遇到中文时给转换成为人眼能看懂的文字内容;indent=4,每一级空4格,用于美化输出的

    (四).json与python之间类型转换关系

    什么是类文件对象?

    具有read()或write()方法的对象就是类文件对象。例:f=open("a.txt","r"),f就是类文件对象

    (五).json起到的是桥梁作用

    json在数据交换中起到了一个载体的作用,承载着相互传递的数据。

    python后端要把数据传给前端(前端有可能是web前端、手机、平板等),因为两种编程语言不同,直接传递数据肯定不行。绝大部分的编程语言对json数据有着各自的转换方式,而XML没有。

    (六).json数据类型对应的python数据类型

    二、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-04-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
  • 相关阅读:
    《构建高性能web站点》阅读笔记(三)
    哈希表的C实现(一)
    《大规模web服务开发技术》阅读笔记
    CentOS搭建python开发环境
    Instagram的技术探索(2)
    CentOS5.5编译安装gvim7.3 失败记录
    由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭
    wp开发中解决gb2312的编码问题
    WP8 SDK 视图设计器 未将对象设置到对象的实例解决方法
    Oracle误删表的恢复
  • 原文地址:https://www.cnblogs.com/quanquan616/p/8682195.html
Copyright © 2011-2022 走看看