os模块

os是与操作系统交互的模块 多用于文件处理

import os
'''
项目的根目录,路径相关的值都用常量(大写)
'''

#获取当前文件的根目录
#先获取当前文件的上一级目录
DAY15_PATH = os.path.dirname(__file__)
print(DAY15_PATH)
>>> D:/xm/daily practice/day15
#获取根目录
BASE_PATH = os.path.dirname(DAY15_PATH)
print(BASE_PATH)
>>>D:/xm/daily practice


# 路径的拼接,拼接文件“绝对路径”
TEST_PATH = os.path.join(DAY15_PATH, 'nmb.txt')
print(TEST_PATH)
>>>D:/xm/daily practice/day15\nmb.txt


# 判断“文件/文件夹”是否存在:若文件存在返回True,若不存在返回False
print(os.path.exists(DAY15_PATH))
print(os.path.exists('lzn.txt'))
>>> True
    False


# 判断“文件夹”是否存在
print(os.path.isdir(DAY15_PATH))
print(os.path.isdir('nmb.txt'))
>>> True
    False


# 创建文件夹
NEW_PATH = os.path.join(DAY15_PATH, 'lzn')
os.mkdir(NEW_PATH)


#删除文件夹 :  只能删除空文件夹
os.rmdir(NEW_PATH)

# 获取某个文件夹中所有文件的名字
name_list = os.listdir(r'D:/xm/daily practice/day15')
print(name_list)  # 输出列表


res = enumerate(name_list)
print(type(res.__next__()))
print(res.__next__())
print(res.__next__())
print(res.__next__())


#需求: 让客户选择文件
name_list = os.listdir(r'D:/xm/daily practice/day15')
print(name_list)

while True:
    # 打印所有文件
    for index,name in enumerate(name_list):
         print(f'编号{index}  文件名{name}')

    choice = input('输入你想看的文件编号').strip()


    # 2.限制用户必须输入数字,数字的范围必须在编号内
    # 若不是数字,则重新选择

    if not choice.isdigit():
        print('你懂什么是编号吗?')
        continue
    #若是数字 往下判断是否在范围内
    choice = int(choice)

    #若不在范围内,重新选择
    if choice not in range(len(name_list)):
        print('你眼睛好使吗?')
        continue

    file_name = name_list[choice]

    file_path = os.path.join(r'D:/xm/daily practice/day15',file_name)
    print(file_path)

    with open(file_path, 'r', encoding='utf-8')as f:
        print(f.read())
    break