Python模块-2025

导入模块:

1.time模块

现在很少用,一般都用datetime。
现在主要用两个功能,sleep()和time()

time.sleep() 睡眠,可以让程序暂停一会儿,可以控制程序执行的频率

import time

print("你好啊")
time.sleep(5)  # 延迟...
print("我叫赛利亚")

while 1:
    time.sleep(5)
    print("对1号服务器检测. 看看状态")

time.time()得到的是时间戳 在计算机中描述一个时间点. 用数字来描述时间点
把时间作为数轴. 选择1970-1-1 0:0:0 作为原点,经过了多少秒
主要用途:计算时间差

import time

# 1670138547.5021243
print(time.time())  # 获取时间戳

t1 = time.time()  # 开始时间
s = 0
for i in range(9999999):
    s += i
print(s)
t2 = time.time()  # 结束时间
print(t2 - t1)  # 显示这部分程序花了多少秒

2.datetime模块

datetime.datetime处理的是年月日时分秒
必须要知道,如何获取系统时间,以及两种转化

import datetime 
# from datatime import datetime  # 需要掌握多一点
# from datatime import date   # 掌握里面一个就够了

# 获取当前系统时间
print(datetime.datetime.now())
# 其他方式
print(datetime.datetime(2025, 3, 23, 13, 23, 15))

# 格式化时间(记住)
t = datetime.datetime.now()  
s = t.strftime("%Y年%m月%d日 %H:%M:%S")  # f即format,str是字符串,因此是将时间格式化为字符串
print(s)

d = input("请输入一个时间(yyyy-mm-dd HH:MM:SS):")
dd = datetime.datetime.strptime(d, "%Y-%m-%d %H:%M:%S")  # p: parse,字符串转化为时间
print(dd)
print(type(dd))

# 两个时间也可以通过相减计算差值

# date只需要掌握如下即可
print(datetime.date.today())  # 直接拿到当前系统时间(年月日)
print(datetime.date.today().strftime("%Y年%m月%d日"))

3.random模块

import random

print(random.random())  # 得到一个随机小数. 取值范围(0,1)之间
print(random.uniform(5,9))  # 得到一个随机小数. 取值范围自定义,可用于抢红包
print(random.randint(1, 2))  # 随机整数 [m, n] m和n边界都是可以取到的
lst = ["樵夫", '张无忌', "张翠山", "张三丰", "张平"]
print(random.choice(lst))  # 从lst随机选一个
print(random.sample(lst, 3))  # 随机抽选n个数据

randint用的较多,如随机生成四位验证码。

此外还有摇骰子等功能。

4.os模块

文件夹的处理
命令的执行

os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command").read() 运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd

os.path
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

import os

os.makedirs("a/b/c")  # 创建文件夹使用的功能,如果已存在则报错
os.removedirs("a/b/c")  # 删除空目录, 目录不是空的会报错

os.mkdir("a/b/c")  # 在a/b中创建c,前提是a/b已有
os.rmdir("a/b/c")   # 在a/b中删除c,前提是a/b已有

names = os.listdir("a")  # 列出a文件夹中所有的文件名,子文件夹不列出
print(names)  # 结果也是个list

os.remove("a/2.txt")  # 删除一个文件
open("a/1.txt", mode="w")  # 创建文件
os.rename("a/1.txt", "a/哈哈哈.txt") # 文件重命名

print(os.getcwd())  # ./   获取当前工作目录
os.chdir("./a")  # 切换工作目录


# 调用命令
# os.system("dir")  # 会出乱码 可以执行一条命令
r = os.popen("dir")  # 不乱码, 可以执行一条命令
print(r.read())  # 查看popen()运行结果

路径相关:

print(os.path.exists("a/b/3.txt"))  # 判断一个路径是否存在.可以是文件也可以是路径.
print(os.path.exists("a/b"))  
print(os.path.isdir("a/b/3.txt"))  # 判断是否是文件夹
print(os.path.isdir("a/b"))  # 判断是否是文件夹
print(os.path.isdir("a/c"))  # 判断是否是文件夹,如果不存在则返回false

print(os.path.isfile("a/b/3.txt"))  # 是否是一个普通文件
print(os.path.isfile("a/b"))  # 是否是一个普通文件
print(os.path.isfile("a/b/haha.txt"))  # 是否是一个普通文件,如果不存在则返回false

print(os.path.abspath("a/b/3.txt"))  # 返回绝对路径
print(os.path.split(os.path.abspath("a/b/3.txt")))  # 切割成文件夹和文件
print(os.path.dirname(os.path.abspath("a/b/3.txt")))  # 只切出来文件夹
print(os.path.basename(os.path.abspath("a/b/3.txt")))  # 只切出来文件

# 拼接路径
r = os.path.join("a/b", "c", "d.txt")  # 自动使用文件系统分隔符来拼接,windows两种斜杠都认
print(r)
r1 = "a/b" + "/" +"c" +"/" + "d.txt"
print(r1)

# 获取文件大小
r = os.path.getsize("a/b/3.txt")   # 单位是字节
print(r)

扩展: 遍历文件夹中的内容

def func(path, ceng):
    # path = "a"
    for name in os.listdir(path):  # b
        # 拼接路径
        new_path = os.path.join(path, name)  # a/b
        if os.path.isdir(new_path):
            print(ceng * "|----- ", name, sep="")  #
            # 如果是文件夹. 那么这个代码应该重新执行一次....
            func(new_path, ceng + 1)  # 递归. 也是循环....
        else:
            print(ceng * "|----- ", name, sep="")

func("a", 1)

创建文件的正确流程:

def create_file(path, gai):
    # 先处理路径
    dirname = os.path.dirname(path)
    if not os.path.exists(dirname):
        os.makedirs(dirname)

    if os.path.exists(path):
        if gai:
            open(path, mode="w").close()
        else:
            return  # 文件已经存在. 并且用户选择了不覆盖.
    else:
        open(path, mode="w").close()  # 创建文件


create_file("张三丰/金花婆婆/呵呵.txt", False)   # 不覆盖

另一种方法:

总结:

5.sys模块

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version 获取Python解释程序的版本信息
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称

示例:

import sys
while 1:
    print(123)
    sys.exit(0)  # 程序退出,给0表示正常退出,给1表示异常退出,记录日志用

print(sys.version)
print(sys.platform)  # win32  windows

print(sys.path)  # python用来搜索模块的, python的环境变量.

# 我在C盘的新建文件夹下建了个xxx.py
sys.path.append("C:/新建文件夹")

import xxx  # 导入该模块的时候. 会自动的去找sys.path,如果里面没有则需要通过sys.path.append()添加,不加则报错
xxx.func()

# sys.path = []
# import db

注意:sys.path:python在import模块的时候,解释器是根据sys.path中给出的路径进行查找的;它是随动的,根据运行的py文件进行动态变化。pycharm中自动自动帮我们加的路径,加入移动到linux服务器上运行则会失效,所以很多时候需要我们手动sys.path.append()添加。

sys.argv:运维常用,可以写成linux命令+参数的形式。

6.pickle和json序列化

pickle:直接把对象序列化(打散成字节)并存储到文件中

import pickle

arr = [11, 22, 33]

bs = pickle.dumps(arr)  # 序列化
print(bs)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容