常用内置模块2
目录
os模块
os模块的功能大多与操作系统有关
一、创建目录(文件夹)
import os
os.mkdir(r'aaa') # 使用相对路径,在当前执行文件所在的路径下创建一个aaa文件夹
# os.mkdir(r'bbb\ccc') # mkdir只能创建单级目录,[WinError 3] 系统找不到指定的路径。: 'bbb\\ccc'
os.makedirs(r'ccc') # makedirs可以创建单级目录
os.makedirs(r'bbb\ccc\ddd\fff') # makedirs支持创建多级目录
二、删除目录(文件夹)
import os
os.rmdir(r'aaa') # 可以删除单级目录
os.rmdir(r'bbb') # 只能删空的单级目录,[WinError 145] 目录不是空的。: 'bbb'
os.removedirs(r'ccc') # 可以删除单级目录
os.removedirs(r'D:\PyCharm 2021\week5\day21\bbb\ccc\ddd\fff') # 删除目录之后,外层的目录也是空的会继续删除
三、查看某个路径下所有的文件名称(文件、文件夹)
import os
print(os.listdir()) # ['.idea', '01 os模块.py']
print(os.listdir(r'D:\Python')) # ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python3.exe', 'python36.dll', 'pythonw.exe', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll', '安装包']
四、删除文件、重命名文件
import os
os.rename(r'temp.txt', r'temp001.txt') # 重命名temp文本文件
os.rename(r'temp001.txt', r'temp.txt') # 重命名temp001文本文件
os.remove(r'temp.txt') # 删除temp文本文件
五、获取当前路径、切换路径
import os
print(os.getcwd()) # D:\PyCharm 2021\week5\day21
os.chdir(r'D:\Python')
print(os.getcwd()) # D:\Python
六、软件开发目录规范,启动脚本兼容性操作
import os
print(os.path.dirname(__file__)) # 动态获取当前执行文件所在的绝对路径,D:/PyCharm 2021/week5/day21
print(os.path.dirname(os.path.dirname(__file__))) # 每嵌套一层就是往上切换一层,D:/PyCharm 2021/week5
print(os.path.abspath(__file__)) # 动态获取当前执行文件自身的路径,D:\PyCharm 2021\week5\day21\01 os模块.py
七、判断文件是否存在
import os
print(os.path.exists(r'temp')) # True,判断所给的路径是否存在
print(os.path.exists(r'01 os模块.py')) # True,判断所给的路径是否存在
print(os.path.isdir(r'temp')) # True,判断路径是否是一个文件夹
print(os.path.isdir(r'01 os模块.py')) # False,判断路径是否是一个文件夹
print(os.path.isdir(r'day21')) # False,只能判断执行文件所在目录的文件夹
print(os.path.isdir(r'dir001')) # False,只能判断执行文件所在目录的文件夹
print(os.path.isfile(r'temp')) # False 判断路径是否是一个文件
print(os.path.isfile(r'01 os模块.py')) # True 判断路径是否是一个文件
八、拼接路径
import os
# 拼接成py文件的路径
dir01 = 'temp'
dir02 = '01 os模块.py'
# print(dir01 + '\' + dir02) # 斜杠为特殊字符会报错
print(dir01 + '' + dir02)
print(r'%s\%s' % (dir01, dir02)) # 操作系统的路径分隔符不是统一的,用占位符拼接兼容性较差
res = os.path.join(dir01, dir02) # 能够自动识别当前操作系统的分隔符
print(res)
九、获取文件大小(单位:bytes)
import os
print(os.path.getsize(r'01 os模块.py')) # 3345
print(os.path.getsize(r'temp.txt')) # 21
十、os模块练习
import os
l1 = ['go全集', 'java全集']
print("""
1.go全集\n2.java全集
""")
file_path = input('请选择学习内容>>>:').strip()
if file_path.isdigit():
tag_path = os.path.dirname(__file__)
dir_name = l1[int(file_path) - 1]
print(dir_name)
full_path = os.path.join(tag_path, dir_name)
file_name_list = os.listdir(full_path)
while True:
for i, j in enumerate(file_name_list, start=1):
print(i, j)
tag_num = input('请选择编号选择内容>>>:')
if tag_num.isdigit():
tag_num = int(tag_num)
if 0 < tag_num < (len(file_name_list) + 1):
file_name = file_name_list[(tag_num - 1)]
with open(full_path, 'r', encoding='utf8') as f1:
res = f1.read()
print(res)
else:
print('非纯数字')
else:
print('只有1和2两个选择')
sys模块
# 1.列举当前执行文件所在的sys.path
# print(sys.path) # ['D:\\PyCharm 2021\\week5\\day21', 'D:\\PyCharm 2021\\week5\\day21', 'D:\\PyCharm 2021\\plugins\\python\\helpers\\pycharm_display', 'D:\\Python\\python36.zip', 'D:\\Python\\DLLs', 'D:\\Python\\lib', 'D:\\Python', 'D:\\Python\\lib\\site-packages', 'D:\\PyCharm 2021\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
# 2.获取解释器版本信息
# print(sys.version) # 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
# 3.获取平台信息
# print(sys.platform) # win32
# 4.自定义命令行操作
import sys
if len(sys.argv) == 4:
username = sys.argv[1]
password = sys.argv[2]
is_login = sys.argv[3]
if username == 'admin' and password == '88888' and is_login == 'y':
print('可以正常执行该文件')
else:
print('用户名或密码错误')
else:
print('请输入用户名,密码和确认登陆,不能多输或少输')
# 异常捕获的形式
import sys
try:
username = sys.argv[1]
password = sys.argv[2]
is_login = sys.argv[3]
except Exception:
print('请输入用户名和密码')
else:
if username == 'admin' and password == '88888' and is_login == 'y':
print('可以正常执行该文件')
else:
print('用户名或密码错误或没有确认登陆')
json模块
json格式数据是不同变成语言之间数据交互的媒介
import json
dic = {'username': 'sam', 'height': '180cm'}
print(dic, type(dic)) # {'username': 'sam', 'height': '180cm'} <class 'dict'>
res = json.dumps(dic)
print(res, type(res)) # {"username": "sam", "height": "180cm"} <class 'str'>
res1 = str(dic)
print(res1, type(res1)) # {'username': 'sam', 'height': '180cm'} <class 'str'>
具体用法
import json
dic2 = {'username': 'sam', 'height': '180cm'}
res = json.dumps(dic2)
print(res, type(res)) # {"username": "sam", "height": "180cm"} <class 'str'>
encode_str = res.encode('utf8')
# 假设将该字符串基于网络发给另外一个python程序
# 先将bytes类型转换成字符串
json_str = encode_str.decode('utf8')
print(json_str, type(json_str))
res1 = json.loads(json_str) # {"username": "sam", "height": "180cm"} <class 'str'>
print(res1, type(res1)) # {'username': 'sam', 'height': '180cm'} <class 'dict'>
"""
json.dumps() 转存
将python数据类型转换成json格式字符串存储
json.loads() 恢复
将json格式字符串转恢复到对应的数据类型
"""
subprocess模块
import subprocess
# ls在终端的意思就是查看当前路径下所有的文件名称
res = subprocess.Popen('dir',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print('stdout', res.stdout.read().decode('GBK')) # 获取正确命令执行之后的结果
print('stderr', res.stderr.read().decode('GBK')) # 获取错误命令执行之后的结果