码迷,mamicode.com
首页 > 编程语言 > 详细

Python 常用模块

时间:2018-07-08 10:45:01      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:注意   def   linux   reading   mat   gif   老王   date   生产者消费者   

一、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

 

Python 常用模块

标签:注意   def   linux   reading   mat   gif   老王   date   生产者消费者   

原文地址:https://www.cnblogs.com/xuanlv-0413/p/9279045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!