这篇教程Python基础之内置模块详解写得很实用,希望能帮到您。
一、osimport 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) # Falsefolder_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)
二、shutilimport 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')
三、sysimport 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()
四、randomimport 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)
五、hashlibimport 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
八、jsonjson模块,是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格式的相互转换: 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}]' 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 jsonfrom decimal import Decimalfrom 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()
九、timeimport time # 获取当前时间戳(自1970-1-1 00:00)v1 = time.time()print(v1) # 时区v2 = time.timezone # 停止n秒,再执行后续的代码。time.sleep(5)
十、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 - v2print(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.123v1 = datetime.fromtimestamp(ctime)print(v1) # datetime格式 ---> 转换为时间戳格式v1 = datetime.now()val = v1.timestamp()print(val) 
补充: - UTC/GMT:世界时间
- 本地时间:本地时区的时间。
Python中关于时间处理的模块有两个,分别是time和datetime。 至此,Python常用的10个内置模块总结到此结束,欢迎大家 批评指正! 到此这篇关于Python基础之内置模块详解的文章就介绍到这了,更多相关Python内置模块内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! Python新手入门之解释器的安装 关于Matplotlib绘制动态实时曲线的方法改进指南 |