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")