python-遍历某个⽂件夹下的所有⼦⽂件夹和⽂件名称“只有提升维度,不断抽象,才能够看清低维度的事物的本质。” - 柏拉图-理想国
问题:
遍历系统某个⽂件夹下⾯的所有⼦⽂件夹和⽂件,输出⼦⽂件夹的⽂件的名称。
解决⽅案:
获取系统⽂件夹的路径,创建⼀个字典。
列出当前⽂件夹下的⽂件夹和⽂件,⽂件夹存储为字典的key1,⽂件存储为字典的key2。
遍历字典中的每⼀个⽂件夹和⽂件
讨论:
当⽂件/⽂件夹名称为汉字时,没有进⾏测试。
术语翻译如何依据key,快速查找当前key及以该key为⽗⽬录的所有⼦⽬录和⼦⽂件,没有实现。
封装性不好,class和独⽴函数混合。
源代码:
# coding=utf-8
from __future__ import print_function
from __future__ import with_statement
relax的过去式
import os
import sys
class traver_name():
jwplayer官网
def __init__(lf, path, father_dir):
lf.path = path + father_dir
def show_name(lf):
'''显⽰当前路径下的⽂件夹和⽂件'''
# print(os.listdir(lf.path))
list0 = os.listdir(lf.path)
# print(os.walk(lf.path))
list_dir = []
雅思口语考官
list_file = []
for i in list0:
if os.path.isdir(lf.path + '\\' + i):
list_dir.append(i)
el:
list_file.append(i)
return list_dir, list_file
def iter_dir(abs_path, dir_father_path, dir_res):
if 0 == len(dir_res[dir_father_path]['dir']): # ⽗⽬录下没有⼦⽬录
return 0
for dir in dir_res[dir_father_path]['dir']: # \\A
dir_son_path = dir_father_path + '\\' + dir # \\A\\A1
dir_res[dir_son_path] = dict()
traver = traver_name(abs_path, dir_son_path) # abs_path绝对路径, dir_path相对路径
dir_res[dir_son_path]['dir'], dir_res[dir_son_path]['file'] = traver.show_name()
# if 0 != len(dir_res[dir_path]['dir']): # ⽗⽬录下存在⼦⽬录
# if 0 != len(dir_res[dir_path]['dir']): # ⽗⽬录下存在⼦⽬录raphael
# for dir_son_path in dir_res[dir_path]['dir']:
# dir_path = dir_father_path + '\\' + dir_son_path
iter_dir(abs_path, dir_son_path, dir_res) # 按实际情况进⾏递归
def show_res(result):
print(result)
list0 = []
for key in result: # 取字典中的key
# print(len(key))
list0.append((len(key), key))
list0.sort()
# print(list0)
baci什么意思for i in range(0,len(list0),1):
key = list0[i][1]
print('⽬录:',key)
print(' 包含⽬录: ', result[key]['dir'] )
print(' 包含⽂件: ', result[key]['file'])
if __name__ == '__main__':
# filename = '1.txt'
# os.remove(filename)
# wd())
# f = open(filename, 'w+')
# f.writelines('a\n')
# f.writelines('ab\n')
# f.writelines('abc\n')
# f.clo()
# f = open(filename, 'r+')
# adline())
# adline())
# adline())
# adline())
# adline())
# f.clo()
# list = os.listdir(dir) # 列出⽬录下的所有⽂件和⽬录
# if os.path.isdir(filepath): # 如果filepath是⽬录,则再列出该⽬录下的所有⽂件 # os.path.isfile(path):
# elif os.path: # 如果filepath是⽂件,直接列出⽂件名
# os.walk(path),遍历path,返回⼀个对象,
# 他的每个部分都是⼀个三元组,
# ('⽬录x',[⽬录x下的⽬录list],⽬录x下⾯的⽂件)
你是谁的英文# os.path.join(name)
# path = sys.path[0]
result = dict()
abs_path = os.getcwd() # 也可以 path = sys.path[0]
father_dir = '\A'
traver = traver_name(abs_path,father_dir)
result[father_dir] = dict()
result[father_dir]['dir'], result[father_dir]['file'] = traver.show_name()
iter_dir(abs_path, father_dir, result)
show_res(result)
'''
{'\\A\\A1\\A12\\A121': {'file': [], 'dir': []},
'\\A\\A2\\A21\\A211': {'file': [], 'dir': []},
'\\A\\A1': {'file': ['', ''], 'dir': ['A11', 'A12']},
'\\A\\A2\\A21': {'file': [''], 'dir': ['A211']},
'\\A\\A3': {'file': [], 'dir': []},
'\\A\\A2': {'file': [], 'dir': ['A21']},
'\\A': {'file': ['A1.txt', 'A2.txt', 'A3.txt'], 'dir': ['A1', 'A2', 'A3']},
'\\A': {'file': ['A1.txt', 'A2.txt', 'A3.txt'], 'dir': ['A1', 'A2', 'A3']}, '\\A\\A1\\A12': {'file': [''], 'dir': ['A121']},
'\\A\\A1\\A11': {'file': [''], 'dir': []}}
⽬录: \A
包含⽬录: ['A1', 'A2', 'A3']
包含⽂件: ['A1.txt', 'A2.txt', 'A3.txt']
⽬录: \A\A1
包含⽬录: ['A11', 'A12']
包含⽂件: ['', '']
⽬录: \A\A2
包含⽬录: ['A21']
包含⽂件: []
⽬录: \A\A3
包含⽬录: []
包含⽂件: []
⽬录: \A\A1\A11
包含⽬录: []
telexrelea包含⽂件: ['']
⽬录: \A\A1\A12
包含⽬录: ['A121']
包含⽂件: ['']日晷怎么读
⽬录: \A\A2\A21
包含⽬录: ['A211']
包含⽂件: ['']
⽬录: \A\A1\A12\A121
包含⽬录: []
包含⽂件: []
⽬录: \A\A2\A21\A211奥斯卡电影
包含⽬录: []
包含⽂件: []
'''