经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python基础之内置模块详解
来源:jb51  时间:2021/6/7 10:29:26  对本文有异议

一、os

  1. import os
  2. # 1. 获取当前脚本绝对路径
  3. """
  4. abs_path = os.path.abspath(__file__)
  5. print(abs_path)
  6. """
  7. # 2. 获取当前文件的上级目录
  8. """
  9. base_path = os.path.dirname( os.path.dirname(路径) )
  10. print(base_path)
  11. """
  12. # 3. 路径拼接
  13. """
  14. p1 = os.path.join(base_path, 'xx')
  15. print(p1)
  16. p2 = os.path.join(base_path, 'xx', 'oo', 'a1.png')
  17. print(p2)
  18. """
  19. # 4. 判断路径是否存在
  20. """
  21. exists = os.path.exists(p1)
  22. print(exists)
  23. """
  24. # 5. 创建文件夹
  25. """
  26. os.makedirs(路径)
  27. """
  28. """
  29. path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
  30. if not os.path.exists(path):
  31. os.makedirs(path)
  32. """
  33. # 6. 是否是文件夹
  34. """
  35. file_path = os.path.join(base_path, 'xx', 'oo', 'uuuu.png')
  36. is_dir = os.path.isdir(file_path)
  37. print(is_dir) # False
  38. folder_path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
  39. is_dir = os.path.isdir(folder_path)
  40. print(is_dir) # True
  41. """
  42. # 7. 删除文件或文件夹
  43. """
  44. os.remove("文件路径")
  45. """
  46. """
  47. path = os.path.join(base_path, 'xx')
  48. shutil.rmtree(path)
  49. """
  • listdir,查看目录下所有的文件
  • walk,查看目录下所有的文件(含子孙文件)
  1. import os
  2. """
  3. data = os.listdir("/Users/hqss/PycharmProjects/luffyCourse/day14/commons")
  4. print(data)
  5. # ['convert.py', '__init__.py', 'page.py', '__pycache__', 'utils.py', 'tencent']
  6. """
  7. """
  8. 要遍历一个文件夹下的所有文件,例如:遍历文件夹下的所有mp4文件
  9. """
  10. data = os.walk("/Users/hqss/Documents/视频教程/路飞Python/mp4")
  11. for path, folder_list, file_list in data:
  12. for file_name in file_list:
  13. file_abs_path = os.path.join(path, file_name)
  14. ext = file_abs_path.rsplit(".",1)[-1]
  15. if ext == "mp4":
  16. print(file_abs_path)

二、shutil

  1. import shutil
  2. # 1. 删除文件夹
  3. """
  4. path = os.path.join(base_path, 'xx')
  5. shutil.rmtree(path)
  6. """
  7. # 2. 拷贝文件夹
  8. """
  9. shutil.copytree("/Users/hqss/Desktop/图/csdn/","/Users/hqss/PycharmProjects/CodeRepository/files")
  10. """
  11. # 3.拷贝文件
  12. """
  13. shutil.copy("/Users/hqss/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/")
  14. shutil.copy("/Users/hqss/Desktop/图/csdn/WX20201123-112406@2x.png","/Users/hqss/PycharmProjects/CodeRepository/x.png")
  15. """
  16. # 4.文件或文件夹重命名
  17. """
  18. shutil.move("/Users/hqss/PycharmProjects/CodeRepository/x.png","/Users/hqss/PycharmProjects/CodeRepository/xxxx.png")
  19. shutil.move("/Users/hqss/PycharmProjects/CodeRepository/files","/Users/hqss/PycharmProjects/CodeRepository/images")
  20. """
  21. # 5. 压缩文件
  22. """
  23. # base_name,压缩后的压缩包文件
  24. # format,压缩的格式,例如:"zip", "tar", "gztar", "bztar", or "xztar".
  25. # root_dir,要压缩的文件夹路径
  26. """
  27. # shutil.make_archive(base_name=r'datafile',format='zip',root_dir=r'files')
  28. # 6. 解压文件
  29. """
  30. # filename,要解压的压缩包文件
  31. # extract_dir,解压的路径
  32. # format,压缩文件格式
  33. """
  34. # shutil.unpack_archive(filename=r'datafile.zip', extract_dir=r'xxxxxx/xo', format='zip')

三、sys

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

四、random

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

五、hashlib

  1. import hashlib
  2. hash_object = hashlib.md5()
  3. hash_object.update("武沛齐".encode('utf-8'))
  4. result = hash_object.hexdigest()
  5. print(result)
  1. import hashlib
  2. hash_object = hashlib.md5("iajfsdunjaksdjfasdfasdf".encode('utf-8'))
  3. hash_object.update("武沛齐".encode('utf-8'))
  4. result = hash_object.hexdigest()
  5. 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格式,是一个数据格式(本质上就是个字符串,常用语网络数据传输)

  1. # Python中的数据类型的格式
  2. data = [
  3. {"id": 1, "name": "武沛齐", "age": 18},
  4. {"id": 2, "name": "alex", "age": 18},
  5. ('wupeiqi',123),
  6. ]
  7. # JSON格式
  8. 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 ,一般称为:序列化
  1. import json
  2. data = [
  3. {"id": 1, "name": "华青水上", "age": 18},
  4. {"id": 2, "name": "alex", "age": 18},
  5. ]
  6. res = json.dumps(data)
  7. print(res) # '[{"id": 1, "name": "\u6b66\u6c9b\u9f50", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
  8. res = json.dumps(data, ensure_ascii=False)
  9. print(res) # '[{"id": 1, "name": "华青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
  • json格式 -> 数据类型,一般称为:反序列化
  1. import json
  2. data_string = '[{"id": 1, "name": "华青水上", "age": 18}, {"id": 2, "name": "alex", "age": 18}]'
  3. data_list = json.loads(data_string)
  4. print(data_list)

类型要求

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

  1. +-------------------+---------------+
  2. | Python | JSON |
  3. +===================+===============+
  4. | dict | object |
  5. +-------------------+---------------+
  6. | list, tuple | array |
  7. +-------------------+---------------+
  8. | str | string |
  9. +-------------------+---------------+
  10. | int, float | number |
  11. +-------------------+---------------+
  12. | True | true |
  13. +-------------------+---------------+
  14. | False | false |
  15. +-------------------+---------------+
  16. | None | null |
  17. +-------------------+---------------+
  18. data = [
  19. {"id": 1, "name": "武沛齐", "age": 18},
  20. {"id": 2, "name": "alex", "age": 18},
  21. ]

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

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

其他功能

json模块中常用的是:

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

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

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

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

九、time

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

十、datetime

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

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

补充:

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

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

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

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号