常用内置模块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'))  # 获取错误命令执行之后的结果

posted @ 2022-03-30 21:47  一梦便是数千载  阅读(22)  评论(0编辑  收藏  举报