音效素材网提供各类素材,打造精品素材网站!

站内导航 站长工具 投稿中心 手机访问

音效素材

Python基础之内置模块详解
日期:2021-09-08 14:37:45   来源:脚本之家

一、os

import os
 
# 1. 获取当前脚本绝对路径
"""
abs_path = os.path.abspath(__file__)
print(abs_path)
"""
 
# 2. 获取当前文件的上级目录
"""
base_path = os.path.dirname( os.path.dirname(路径) )
print(base_path)
"""
 
# 3. 路径拼接
"""
p1 = os.path.join(base_path, 'xx')
print(p1)
p2 = os.path.join(base_path, 'xx', 'oo', 'a1.png')
print(p2)
"""
 
# 4. 判断路径是否存在
"""
exists = os.path.exists(p1)
print(exists)
"""
 
# 5. 创建文件夹
"""
os.makedirs(路径)
"""
"""
path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
if not os.path.exists(path):
    os.makedirs(path)
"""
 
# 6. 是否是文件夹
"""
file_path = os.path.join(base_path, 'xx', 'oo', 'uuuu.png')
is_dir = os.path.isdir(file_path)
print(is_dir) # False
folder_path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
is_dir = os.path.isdir(folder_path)
print(is_dir) # True
"""
 
# 7. 删除文件或文件夹
"""
os.remove("文件路径")
"""
"""
path = os.path.join(base_path, 'xx')
shutil.rmtree(path)
"""
  • listdir,查看目录下所有的文件
  • walk,查看目录下所有的文件(含子孙文件)
import os
 
"""
data = os.listdir("/Users/hqss/PycharmProjects/luffyCourse/day14/commons")
print(data)
# ['convert.py', '__init__.py', 'page.py', '__pycache__', 'utils.py', 'tencent']
"""
 
"""
要遍历一个文件夹下的所有文件,例如:遍历文件夹下的所有mp4文件
"""
 
data = os.walk("/Users/hqss/Documents/视频教程/路飞Python/mp4")
for path, folder_list, file_list in data:
    for file_name in file_list:
        file_abs_path = os.path.join(path, file_name)
        ext = file_abs_path.rsplit(".",1)[-1]
        if ext == "mp4":
            print(file_abs_path)

二、shutil

import shutil
 
# 1. 删除文件夹
"""
path = os.path.join(base_path, 'xx')
shutil.rmtree(path)
"""
 
# 2. 拷贝文件夹
"""
shutil.copytree("/Users/hqss/Desktop/图/csdn/","/Users/hqss/PycharmProjects/CodeRepository/files")
"""
 
# 3.拷贝文件
"""
shutil.copy("/Users/hqss/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/")
shutil.copy("/Users/hqss/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/x.png")
"""
 
# 4.文件或文件夹重命名
"""
shutil.move("/Users/hqss/PycharmProjects/CodeRepository/x.png","/Users/hqss/PycharmProjects/CodeRepository/xxxx.png")
shutil.move("/Users/hqss/PycharmProjects/CodeRepository/files","/Users/hqss/PycharmProjects/CodeRepository/images")
"""
 
# 5. 压缩文件
"""
# base_name,压缩后的压缩包文件
# format,压缩的格式,例如:"zip", "tar", "gztar", "bztar", or "xztar".
# root_dir,要压缩的文件夹路径
"""
# shutil.make_archive(base_name=r'datafile',format='zip',root_dir=r'files')
 
 
# 6. 解压文件
"""
# filename,要解压的压缩包文件
# extract_dir,解压的路径
# format,压缩文件格式
"""
# shutil.unpack_archive(filename=r'datafile.zip', extract_dir=r'xxxxxx/xo', format='zip')

三、sys

import sys
 
# 1. 获取解释器版本
"""
print(sys.version)
print(sys.version_info)
print(sys.version_info.major, sys.version_info.minor, sys.version_info.micro)
"""
 
# 2. 导入模块路径
"""
print(sys.path)
"""
  • argv,执行脚本时,python解释器后面传入的参数
import sys
 
print(sys.argv)
 
 
# [
#       '/Users/hqss/PycharmProjects/luffyCourse/day14/2.接受执行脚本的参数.py'
# ]
 
# [
#     "2.接受执行脚本的参数.py"
# ]
 
# ['2.接受执行脚本的参数.py', '127', '999', '666', 'wupeiqi']
 
# 例如,请实现下载图片的一个工具。
 
def download_image(url):
    print("下载图片", url)
 
 
def run():
    # 接受用户传入的参数
    url_list = sys.argv[1:]
    for url in url_list:
        download_image(url)
 
 
if __name__ == '__main__':
    run()

四、random

import random
 
# 1. 获取范围内的随机整数
v = random.randint(10, 20)
print(v)
 
# 2. 获取范围内的随机小数
v = random.uniform(1, 10)
print(v)
 
# 3. 随机抽取一个元素
v = random.choice([11, 22, 33, 44, 55])
print(v)
 
# 4. 随机抽取多个元素
v = random.sample([11, 22, 33, 44, 55], 3)
print(v)
 
# 5. 打乱顺序
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(data)
print(data)

五、hashlib

import hashlib
 
hash_object = hashlib.md5()
hash_object.update("武沛齐".encode('utf-8'))
result = hash_object.hexdigest()
print(result)
import hashlib
 
hash_object = hashlib.md5("iajfsdunjaksdjfasdfasdf".encode('utf-8'))
hash_object.update("武沛齐".encode('utf-8'))
result = hash_object.hexdigest()
print(result)

六、configparser

详见地址,Python使用configparser读取ini配置文件,https://www.jb51.net/article/187233.htm

七、xml

详见地址,python自定义解析简单xml格式文件的方法,https://www.jb51.net/article/65886.htm

八、json

json模块,是python内部的一个模块,可以将python的数据格式 转换为json格式的数据,也可以将json格式的数据转换为python的数据格式。

json格式,是一个数据格式(本质上就是个字符串,常用语网络数据传输)

# Python中的数据类型的格式
data = [
    {"id": 1, "name": "武沛齐", "age": 18},
    {"id": 2, "name": "alex", "age": 18},
    ('wupeiqi',123),
]
 
# JSON格式
value = '[{"id": 1, "name": "武沛齐", "age": 18}, {"id": 2, "name": "alex", "age": 18},["wupeiqi",123]]'

核心功能

json格式的作用

跨语言数据传输,例如:
    A系统用Python开发,有列表类型和字典类型等。
    B系统用Java开发,有数组、map等的类型。

    语言不同,基础数据类型格式都不同。
    
    为了方便数据传输,大家约定一个格式:json格式,每种语言都是将自己数据类型转换为json格式,也可以将json格式的数据转换为自己的数据类型。

Python数据类型与json格式的相互转换:

  • 数据类型 -> json ,一般称为:序列化
import json
 
data = [
    {"id": 1, "name": "华青水上", "age": 18},
    {"id": 2, "name": "alex", "age": 18},
]
 
res = json.dumps(data)
print(res) # '[{"id": 1, "name": "\u6b66\u6c9b\u9f50", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
 
res = json.dumps(data, ensure_ascii=False)
print(res) # '[{"id": 1, "name": "华青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
  • json格式 -> 数据类型,一般称为:反序列化
import json
 
data_string = '[{"id": 1, "name": "华青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
 
data_list = json.loads(data_string)
 
print(data_list)

类型要求

python的数据类型转换为 json 格式,对数据类型是有要求的,默认只支持:

 +-------------------+---------------+
    | Python            | JSON          |
    +===================+===============+
    | dict              | object        |
    +-------------------+---------------+
    | list, tuple       | array         |
    +-------------------+---------------+
    | str               | string        |
    +-------------------+---------------+
    | int, float        | number        |
    +-------------------+---------------+
    | True              | true          |
    +-------------------+---------------+
    | False             | false         |
    +-------------------+---------------+
    | None              | null          |
    +-------------------+---------------+
 
 
data = [
    {"id": 1, "name": "武沛齐", "age": 18},
    {"id": 2, "name": "alex", "age": 18},
]

其他类型如果想要支持,需要自定义JSONEncoder才能实现

import json
from decimal import Decimal
from datetime import datetime
 
data = [
    {"id": 1, "name": "武沛齐", "age": 18, 'size': Decimal("18.99"), 'ctime': datetime.now()},
    {"id": 2, "name": "alex", "age": 18, 'size': Decimal("9.99"), 'ctime': datetime.now()},
]
 
 
class MyJSONEncoder(json.JSONEncoder):
    def default(self, o):
        if type(o) == Decimal:
            return str(o)
        elif type(o) == datetime:
            return o.strftime("%Y-%M-%d")
        return super().default(o)
 
 
res = json.dumps(data, cls=MyJSONEncoder)
print(res)

其他功能

json模块中常用的是:

json.dumps,序列化生成一个字符串。

json.loads,发序列化生成python数据类型。

json.dump,将数据序列化并写入文件(不常用)

import json
 
data = [
    {"id": 1, "name": "武沛齐", "age": 18},
    {"id": 2, "name": "alex", "age": 18},
]
 
file_object = open('xxx.json', mode='w', encoding='utf-8')
 
json.dump(data, file_object)
 
file_object.close()
  • json.load,读取文件中的数据并反序列化为python的数据类型(不常用)
import json
 
file_object = open('xxx.json', mode='r', encoding='utf-8')
 
data = json.load(file_object)
print(data)
 
file_object.close()

九、time

import time
 
# 获取当前时间戳(自1970-1-1 00:00)
v1 = time.time()
print(v1)
 
# 时区
v2 = time.timezone
 
# 停止n秒,再执行后续的代码。
time.sleep(5)

十、datetime

在平时开发过程中的时间一般是以为如下三种格式存在:

  • datetime
from datetime import datetime, timezone, timedelta
 
v1 = datetime.now()  # 当前本地时间
print(v1)
 
tz = timezone(timedelta(hours=7))  # 当前东7区时间
v2 = datetime.now(tz)
print(v2)
 
v3 = datetime.utcnow()  # 当前UTC时间
print(v3)
from datetime import datetime, timedelta
 
v1 = datetime.now()
print(v1)
 
# 时间的加减
v2 = v1 + timedelta(days=140, minutes=5)
print(v2)
 
# datetime类型 + timedelta类型
from datetime import datetime, timezone, timedelta
 
v1 = datetime.now()
print(v1)
 
v2 = datetime.utcnow()  # 当前UTC时间
print(v2)
 
# datetime之间相减,计算间隔时间(不能相加)
data = v1 - v2
print(data.days, data.seconds / 60 / 60, data.microseconds)
 
# datetime类型 - datetime类型
# datetime类型 比较 datetime类型
  • 字符串
# 字符串格式的时间  ---> 转换为datetime格式时间
text = "2021-11-11"
v1 = datetime.strptime(text,'%Y-%m-%d') # %Y 年,%m,月份,%d,天。
print(v1)
# datetime格式 ----> 转换为字符串格式
v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")
print(val)
  • 时间戳
# 时间戳格式 --> 转换为datetime格式
ctime = time.time() # 11213245345.123
v1 = datetime.fromtimestamp(ctime)
print(v1)
# datetime格式 ---> 转换为时间戳格式
v1 = datetime.now()
val = v1.timestamp()
print(val)

补充:

  • UTC/GMT:世界时间
  • 本地时间:本地时区的时间。

Python中关于时间处理的模块有两个,分别是time和datetime。

至此,Python常用的10个内置模块总结到此结束,欢迎大家 批评指正!

到此这篇关于Python基础之内置模块详解的文章就介绍到这了,更多相关Python内置模块内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

    您感兴趣的教程

    在docker中安装mysql详解

    本篇文章主要介绍了在docker中安装mysql详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编...

    详解 安装 docker mysql

    win10中文输入法仅在桌面显示怎么办?

    win10中文输入法仅在桌面显示怎么办?

    win10系统使用搜狗,QQ输入法只有在显示桌面的时候才出来,在使用其他程序输入框里面却只能输入字母数字,win10中...

    win10 中文输入法

    一分钟掌握linux系统目录结构

    这篇文章主要介绍了linux系统目录结构,通过结构图和多张表格了解linux系统目录结构,感兴趣的小伙伴们可以参考一...

    结构 目录 系统 linux

    PHP程序员玩转Linux系列 Linux和Windows安装

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,Linux和Windows安装nginx教程,具有一定的参考价值,感兴趣...

    玩转 程序员 安装 系列 PHP

    win10怎么安装杜比音效Doby V4.1 win10安装杜

    第四代杜比®家庭影院®技术包含了一整套协同工作的技术,让PC 发出清晰的环绕声同时第四代杜比家庭影院技术...

    win10杜比音效

    纯CSS实现iOS风格打开关闭选择框功能

    这篇文章主要介绍了纯CSS实现iOS风格打开关闭选择框,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作...

    css ios c

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的办法

    Win7如何给C盘扩容 Win7系统电脑C盘扩容的

    Win7给电脑C盘扩容的办法大家知道吗?当系统分区C盘空间不足时,就需要给它扩容了,如果不管,C盘没有足够的空间...

    Win7 C盘 扩容

    百度推广竞品词的投放策略

    SEM是基于关键词搜索的营销活动。作为推广人员,我们所做的工作,就是打理成千上万的关键词,关注它们的质量度...

    百度推广 竞品词

    Visual Studio Code(vscode) git的使用教程

    这篇文章主要介绍了详解Visual Studio Code(vscode) git的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。...

    教程 Studio Visual Code git

    七牛云储存创始人分享七牛的创立故事与

    这篇文章主要介绍了七牛云储存创始人分享七牛的创立故事与对Go语言的应用,七牛选用Go语言这门新兴的编程语言进行...

    七牛 Go语言

    Win10预览版Mobile 10547即将发布 9月19日上午

    微软副总裁Gabriel Aul的Twitter透露了 Win10 Mobile预览版10536即将发布,他表示该版本已进入内部慢速版阶段,发布时间目...

    Win10 预览版

    HTML标签meta总结,HTML5 head meta 属性整理

    移动前端开发中添加一些webkit专属的HTML5头部标签,帮助浏览器更好解析HTML代码,更好地将移动web前端页面表现出来...

    移动端html5模拟长按事件的实现方法

    这篇文章主要介绍了移动端html5模拟长按事件的实现方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家...

    移动端 html5 长按

    HTML常用meta大全(推荐)

    这篇文章主要介绍了HTML常用meta大全(推荐),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    cdr怎么把图片转换成位图? cdr图片转换为位图的教程

    cdr怎么把图片转换成位图? cdr图片转换为

    cdr怎么把图片转换成位图?cdr中插入的图片想要转换成位图,该怎么转换呢?下面我们就来看看cdr图片转换为位图的...

    cdr 图片 位图

    win10系统怎么录屏?win10系统自带录屏详细教程

    win10系统怎么录屏?win10系统自带录屏详细

    当我们是使用win10系统的时候,想要录制电脑上的画面,这时候有人会想到下个第三方软件,其实可以用电脑上的自带...

    win10 系统自带录屏 详细教程

    + 更多教程 +
    ASP编程JSP编程PHP编程.NET编程python编程