1 # 给定一个目录
 2 # 列举出这个目录中的所有文件和文件夹
 3 # 以及子文件夹中的所有文件
 4 
 5 import os
 6 
 7 def func(path, f):   # 参数为给定的目录  a
 8     file_list = os.listdir(path)  # 获取给定目录中的所有(文件, 文件夹)
 9 
10     for file in file_list:  # 遍历列表, 获取其中的每个(文件, 文件夹)
11         file_path = path + "/" + file  # D:/first_level/day14/a/b/c
12         if os.path.isfile(file_path):  # b
13             print("[文件]: ", file)
14             f.write("[文件]: %s\n" % file)
15 
16         elif os.path.isdir(file_path):  # 此时该文件是个目录
17             print("[目录]:", file)
18             f.write("[目录]: %s\n" % file)
19             func(file_path, f)  # 路径: 绝对路径  file就只是个文件名
20 
21 
22 f = open("ufile.txt", "a")  # 在递归中操作同一个文件时, 尽量把文件的打开和关闭放在函数外,避免在递归中多次打开;
23 func(r'D:/first_level/day14', f)
24 f.close()
 1 """
 2     1、让用户输入一个目录
 3     2、判断用户输入的是否是一个目录
 4         2.1 切换到用户所输入的目录中去
 5         2.2 获取当前目录, 并显示当前目录下的所有文件
 6             再分别显示每个文件是 文件 或者是 目录?
 7     3、显示功能, 让用户选择, 并执行
 8         3.1 添加前缀
 9         3.2 删除前缀
10         3.3 创建文件
11         3.4 删除文件
12         3.5 重命名文件
13 """
14 import os
15 
16 
17 def func():
18     dir = input("请输入一个目录:")
19 
20     if os.path.isdir(dir):
21         os.chdir(dir)  # 切换到指定目录 --> day14
22         file_list = os.listdir(dir)  # 获取指定路径下的所有文件, 并返回一个列表
23         # ["hw01.py", "hw02.py", "test.py", "uabc.txt",...]
24         for file in file_list:  # 遍历获取列表中的每一个文件
25             if os.path.isdir(file):  # 该文件的相对路径
26                 print("[目录]: %s" % file)
27             elif os.path.isfile(file):
28                 print("[文件]: %s" % file)
29 
30         choice = input("---1,添加前缀;2,删除前缀;3,创建文件;4,删除文件;5,重命名文件---")
31         if choice == "1":
32             res = input("请输入所修改的文件和前缀, 中间以空格分开:")  # 'hw01.py m'
33             name_list = res.split(" ")  # 0 文件名 1 前缀
34             if name_list[0] in file_list:   # 判断该文件是否存在
35                 os.rename(name_list[0], name_list[1] + name_list[0])
36                 print("文件添加前缀成功!!!")
37             else:
38                 print("该文件不存在, 无法改名")
39 
40         elif choice == "2":
41             res = input("请输入所删除前缀的文件和前缀, 中间以空格分开:")
42             name_list = res.split(" ")
43             if name_list[0] in file_list:  # utext.py --> test.py
44                 os.rename(name_list[0], name_list[0].replace(name_list[1], "", 1))
45                 print("文件删除前缀成功!")
46             else:
47                 print("该文件不存在")
48 
49         elif choice == "3":  # 创建文件
50             file_name = input("请输入要创建的文件名:")
51             if not os.path.exists(file_name):
52                 with open(file_name, "w") as f:
53                     pass
54                 print("文件创建成功")
55             else:
56                 print("该文件已存在")
57 
58         elif choice == "4":  # 删除文件
59             file_name = input("请输入要删除的文件名:")
60             if os.path.exists(file_name):
61                 os.remove(file_name)  # 如果文件存在, 那么删除
62                 print("已成功删除该文件")
63             else:
64                 print("该文件不存在")
65 
66         elif choice == "5":  # 重命名
67             res = input("请输入原文件和新文件名, 中间以空格分开:")
68             name_list = res.split(" ")  # 0--> 原文件名, 1 --> 新文件名
69             if name_list[0] in file_list:
70                 os.rename(name_list[0], name_list[1])
71                 print("文件重命名成功~")
72             else:
73                 print("该文件不存在, 无法重命名...")
74         else:
75             print("--输入错误--")
76     else:
77         print("您输入的不是一个目录, %s" % dir)
78 
79 
80 func()
 1 # 用户输入文件名以及开始搜索的路径
 2 # 搜索该文件是否存在,如遇到文件夹,则进入文件夹继续搜索
 3 
 4 import os
 5 
 6 
 7 def func(s_file, path):   # 参数1: 被搜索的文件 参数2: 搜索的目录 D:/first_level/day14/a/b
 8     file_list = os.listdir(path)  # 将该目录下的所有文件/文件夹 获取到
 9 
10     for file in file_list:  # 遍历列表, 获取列表中的每个文件  a, b, c.txt
11         file_abs_path = path + "/" + file  # 获取每个文件的绝对路 "D:/first_level/day14/a/b/c.txt"
12 
13         if os.path.isdir(file_abs_path):  # 判断该文件是否是一个目录  D:/first_level/day14/a/b/c.txt
14             res = func(s_file, file_abs_path)  # 递归调用自己
15             if res == True:
16                 return True
17 
18         elif file == s_file:  # 判断遍历出的文件 是否就是 被搜索的文件
19             return True
20 
21     return False
22 
23 
24 r = func("c.txt", "D:/first_level/day14")
25 print(r)
 1 """
 2     封装一个函数,可以使用mkdir的方法, 实现创建多级目录的功能
 3     os.mkdir()  创建一级目录
 4     os.makedirs()  创建多级目录
 5 
 6     D:/xixi/haha/hanhan/daidai/ranran/taotao/huihui
 7 思路:
 8     D:/    从根盘符开始, 这个根目录肯定是存在的
 9     D:/xixi   判断跟盘符下的第1个路径, 如果不存在, 创建; 如果存在, 继续往下判断;
10     D:/xixi/haha  判断跟盘符下的第2个路径,  如果不存在, 创建; 如果存在, 继续往下判断;
11     D:/xixi/haha/hanhan  判断跟盘符下的第3个路径,  如果不存在, 创建; 如果存在, 继续往下判断;
12     .....
13 
14     D:   xixi   haha   hanhan   daidai    taotao    ranran
15 
16 """
17 import os
18 
19 
20 def my_makedirs(path):  # path: 所创建的多级目录
21     path_list = path.split("/")  # 
22 
23     for this_path in path_list:
24 
25         if not os.path.exists(this_path):
26             os.mkdir(this_path)
27 
28         print(os.getcwd())  # 当前路径
29         os.chdir(this_path + "/")  # 切换到D:\没成功 --> 此时还是当前路径
30 
31 
32 my_makedirs("D:/xixi/haha/hanhan/daidai/ranran/taotao/huihui")