用递归,获得所有文件目录
def read(path, n): file_list = os.listdir(path) # (1)获取目录下所有文件和目录, 通过list返回 for file in file_list: file_path = os.path.join(path, file) # (2)将上级文件路径与文件拼接,返回文件路径 if os.path.isdir(file_path): # (2)判断文件是否是目录 print(' '*n, file) read(file_path, n+1) else: print(' ' * n, file) read('F:书', 0)
没用递归,不能得到所有文件
file_list = os.listdir('F:书') # (1)获取目录下所有文件和目录, 通过list返回 # print(file_list) for file in file_list: file_path = os.path.join('F:书', file) # (2)将上级文件路径与文件拼接,返回文件路径 # print(file_path) if os.path.isdir(file_path): # (2)判断文件是否是目录 print("这是目录", file) else: print("这是文件", file)
用递归,获得文件夹的大小
class A: def __init__(self): self.flesize = 0 def read(self, path): file_list = os.listdir(path) # (1)获取目录下所有文件和目录, 通过list返回 for file in file_list: file_path = os.path.join(path, file) # (2)将上级文件路径与文件拼接,返回文件路径 if os.path.isdir(file_path): # (2)判断文件是否是目录 self.flesize = self.flesize + os.path.getsize(file_path) self.read(file_path) else: self.flesize = self.flesize + os.path.getsize(file_path) return self.flesize a = A() size = a.read('F:\') print(size)
用os.walk获取文件所有目录
import os def file_name(file_dir): for root, dirs, files in os.walk(file_dir): print(root) #当前目录路径 print(dirs) #当前路径下所有子目录 print(files) #当前路径下所有非目录子文件