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
原文地址:https://www.cnblogs.com/quanquan616/p/8682195.html