Python模块上

python模块

  • os和sys模块

  • json模块

  • os和sys模块

  1. os模块主要是针对目前执行文件对操作系统的操作
  2. sys模块主要是正对python解释器操作
  • os模块的用法
1. 创建目录
os.mkdir(r'd1')  # 当前目录下创建d1,不可以创建多级目录

os.makedirs(r'a1/b1/c1/d1')  # 当前目录下创建多级目录,也可以创建单级目录

2. 删除目录
os.rmdir(r'd1')  # 可以删除单级目录,如果有文件不可以删除,并且不可以删除多级目录

os.removedirs(r'a1/b1/c1/d1')  # 可以删除多成目录,只能删除空目录

3. 列举文件路径下内容名称
print(os.listdir(r'modular'))  # 列出当前目录下的所有文件

4. 删除重命名文件
os.rename(r'test', 'test.py')  # 重命名test文件

os.remove(r'test.py')  # 删除test.py 文件

5. 获取/切换当前工作目录
print(os.getcwd())  # 获取当前工作目录

os.chdir('..')  # 切换工作目录

6. 动态获取项目根目录
print(os.path.abspath(__file__))  # 获取执行文件的绝对路径

print(os.path.dirname(__file__))  # 获取执行文件所在目录路径

7. 判断路径是否存在(文件/目录)
print(os.path.exists(r'osandsys.py'))  # 判断文件是否存在

print(os.path.exists(r'/Users/wesley/PycharmProjects/python-1'))  # 判断路径是否存在

print(os.path.isfile('osandsys.py'))  # 判断路径是否文件 True
print(os.path.isfile('/Users/wesley/PycharmProjects/python-1'))  # 判断路径是否文件 False

print(os.path.isdir('osandsys.py'))  # 判断是否为路径 False

print(os.path.isdir(r'/Users/wesley/PycharmProjects/python-1'))  # 判断是否路径 True


8. 路径拼接
s1 = '/root/home/python'
s2 = 'start.py'
print(os.path.join(s1, s2))   # 使用join拼接
/root/home/python/start.py

9. 获取文件大小
print(os.path.getsize(r'osandsys.py'))  # 获取的大小是字节
  • sys模块的用法
print(sys.path)  # 获取pycharm的环境变量

print(sys.getrecursionlimit())  # 获取最大递归深度

sys.setrecursionlimit(5000)  # 修改递归深度

print(sys.version)  # 获取python解释器的版本信息

print(sys.platform)  # 获取当前系统架构

# argv 主要用于命令行,在执行过程中可以让用户传入必须参数作为判断
res = sys.argv
if len(res) != 3:
    print('执行命令缺少了用户名或密码')
else:
    username = res[1]
    password = res[2]
    if username == 'jason' and password == '123':
        print('jason您好 文件正常执行')
    else:
        print('您不是jason无权执行该文件')
  • json模块

序列化模块,序列化可以让其他的编程语言识别 json 格式数据

  1. 需要注意,json和python的字典并无太大区别,唯一需要注意的是,使用的是双引号
1. 针对数据操作 dumps,loads 
2. 针对文件操作 dump, load

1. dumps 是将python中的字典数据序列化为json数据
2. loads 是将json数据反序列化为python中的字典数据
3. dump 是配合文件使用,在序列化过后直接写入文件
4. load 配合文件使用,直接读取序列化之后的python类型



d1 = {'name': 'wesley', 'age': 18}
print(d1)
print(type(d1))
d2 = json.dumps(d1)
print(d2)
print(type(d2))
d3 = json.loads(d2)
print(type(d3))
{'name': 'wesley', 'age': 18}
<class 'dict'>
{"name": "wesley", "age": 18}
<class 'str'>
<class 'dict'>
  • 联系题

# 1.编写一个统计指定文件类型的脚本工具
#  输入指定类型的文件后缀
#      eg:.txt
#  并给出一个具体路径 之后统计该类型文件在该文件下的个数
#   ps:简单实现即可 无需优化
import os, json

def file_type_find():
    while True:
        # 输入需要查询的路径
        user_path = input('请输入需要查询的文件路径: ').strip()
        # 判断路径是否存在
        if not os.path.exists(user_path):
            print('路径不存在,请从新输入: ')
            continue

        # 输入查看的文件类型
        look = input('请输入需要查看的文件类型: ').strip()

        # 查看用户输入的路径文件
        look_file_type = os.listdir(rf'{user_path}')
        count = 0
        # 过滤文件结尾
        for i in look_file_type:
            if i.endswith(look):
                count += 1
                print(os.path.join(user_path, i))

        print(f'此类型文件为{count}个')
        break

file_type_find()


2. 编程小练习
 有一个目录文件下面有一堆文本文件
     eg:
      db目录
            J老师视频合集
            R老师视频合集
            C老师视频合集
            B老师视频合集
 文件内容自定义即可 要求循环打印出db目录下所有的文件名称让用户选择
  用户选择哪个文件就自动打开该文件并展示内容
  涉及到文件路径全部使用代码自动生成 不准直接拷贝当前计算机固定路径
  
import os, json, sys

# 进入db文件夹
find_dirdb = os.listdir()
if 'db' in find_dirdb:
    # 切换目录
    os.chdir('db')
    # 获取目录下的文件
    file_list = os.listdir()
    # 获取路径
    db_path = os.getcwd()
    while True:
        print(file_list)
        choice = input('请选择需要查看的文件(请输入文件完整的名字):')
        abs_path = os.path.join(db_path, choice)
        with open(rf'{abs_path}', 'r', encoding='utf8') as f:
            print(f.read())

posted @ 2025-03-13 13:56  樵夫-  阅读(9)  评论(0)    收藏  举报