一、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个内置模块总结到此结束,欢迎大家 批评指正!
暂无评论内容