python实现的txt目录树
首先,我先表述一下我的需求:
我记笔记比较乱,但我比较容易"半途而废".文件夹很多,但大都只有一两个文件....
所以我需要一种方式,能在不逐个打开文件夹的前提下,"看到每个文件的名字和位置"
最后发现,我需要的应该是目录树.....不过我不需要制表符,要统统使用tab
那就撸起袖子开干
#总体框架
os.walk()获取全部路径,文件名信息
将上面得到的数据转换为文本
写入txt
启动记事本打开写好的txt
第一部分,一步搞定φ(>ω<*)
#代码:
import os
print(list(os.walk("."))) #运行结果
[('.', ['示例'], ['ls.py', 'mian.py', '新增.py']), ('.\\示例', [], ['a.txt'])]
'''文件结构
示例
a.txt
ls.py
mian.py
新增.py
'''
PS: "." 代指当前目录
第二部分,最重要的部分,将第一部分得到的数据"文本化"
每个三元数组都是(路径,文件夹,文件)的格式,
那就写个函数将它换成文本
#转化为文本
def to_txt(路径):
定义一个空list
得到此路径下的子文件夹,子文件名字
写入文件夹自身的名字
将每个子文件夹"文本化"
并塞入list
将每个文件名加上"\n"
并塞入list
return list
为了方便根据路径名得到 文件的信息
将第一步的得到的三元元组的列表 转换的成 以路径为键, 的字典
import os
list_way = (list(os.walk(".")))
dict_way = dict( zip( [ i[0] for i in list_way] , list_way ) )
for i in dict_way:
print(i ,end = " ")
print(dict_way[i]) '''
================运行结果====================
.\示例 ('.\\示例', [], ['a.txt'])
. ('.', ['示例'], ['ls.py', 'mian.py', 'txt.bj', '新增.py'])
'''
PS:文件夹层数越多,前面的缩进就越多
import os
list_way = (list(os.walk(".")))
dict_way = dict( zip( [ i[0] for i in list_way] , list_way ) ) def to_txt(way):
l = [ ]
three = dict_way[ way ]
#根据路径获取三元元组
tab_num = way.count("\\")
#计算缩进数量, 缩进<=>文件层数<=>路径中\的个数
if tab_num:
#如果路径中不含\ <=> 路径为"." <=> TAB_num == 0
#此时不用打文件夹名字 <=> 根目录
l.append("\t" * (tab_num - 1)+way.split("\\")[ -1 ] + "\n" )
#打出文件夹名字
#文件夹名字是路径里面"最后一个\"后面的部分
#文件名字,与上一级文件同级,故少个Tab
for i in three[1]:
#遍历子文件夹们
l = l + to_txt( way+"\\"+i )
#拼接路径,调用自身,实现子文件夹文本化
#鉴于返回值是列表 所以用"+"而非append
for i in three[2]:
#遍历子文件们
l.append( "\t" * tab_num + i +"\n")
#加Tab,加换行
return l
#返回弄好的文本 l = to_txt(".")
for i in l:
print(i, end ="")
'''
========运行结果===========
示例
a.txt
ls.py
mian.py
txt.bj
新增.py
'''
下面奉上无注释版
import os
list_way = (list(os.walk(".")))
dict_way = dict( zip( [ i[0] for i in list_way] , list_way ) ) def to_txt(way):
l = [ ]
three = dict_way[ way ]
tab_num = way.count("\\")
if tab_num:
l.append("\t" * (tab_num - 1)+way.split("\\")[ -1 ] + "\n" )
for i in three[1]:
l = l + to_txt( way+"\\"+i )
for i in three[2]:
l.append( "\t" * tab_num + i +"\n")
return l
l = to_txt(".")
for i in l:
print(i, end ="")
'''
===================
示例
a.txt
ls.py
mian.py
txt.bj
新增.py
'''
无注释的
第三部分和第四部分
写入txt,打开记事本
list_txt = to_txt(".")
with open("目录树.txt","w") as fil:
for i in list_txt:
fil.write(i)
os.system('notepad 目录树.txt')
完了...
全部的代码
import os
list_way = (list(os.walk(".")))
dict_way = dict( zip( [ i[0] for i in list_way] , list_way ) ) def to_txt(way):
l = [ ]
three = dict_way[ way ]
tab_num = way.count("\\")
if tab_num:
l.append("\t" * (tab_num - 1)+way.split("\\")[ -1 ] + "\n" )
for i in three[1]:
l = l + to_txt( way+"\\"+i )
for i in three[2]:
l.append( "\t" * tab_num + i +"\n")
return l
list_txt = to_txt(".")
with open("目录树.txt","w") as fil:
for i in list_txt:
fil.write(i)
os.system('notepad 目录树.txt')
撒花✿✿ヽ(°▽°)ノ✿
-end-
另外,我的目录树后缀是.bj
我已经将它设成了默认EditPlus打开....
搭配 折叠/收起 食用更佳
python实现的txt目录树的更多相关文章
- python 小程序 复制目录树
1. 将一个目录树完全复制到另外一个目录下面 import os, sys """ 复制目录树 """ maxloadsize = 1024 ...
- paip.tree 生成目录树到txt后的折叠查看
paip.tree 生成目录树到txt后的折叠查看 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.ne ...
- python生成指定文件夹目录树
# -*- coding: utf-8 -*- import sys from pathlib import Path class DirectionTree(object): "" ...
- python课件-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python课件-淘宝-目录.txt│ ├─01python核心编程阶段-linux基础(│ linux_h ...
- python GUI编程tkinter示例之目录树遍历工具
摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...
- 《Python标准库》 目录
目录 译者序序前言第1章 文本1.1 string—文本常量和模板1.1.1 函数1.1.2 模板1.1.3 高级模板1.2 textwrap—格式化文本段落1.2.1 示例数据1.2.2 填充段落1 ...
- Python之文件与目录
file 通常建议使用open()打开文件,file用于类型判断 如果要把数据写到磁盘上,除调用flush()外,还得用sync(),以确保数据从系统缓冲区同步到磁盘.close()总是会调用这两个方 ...
- 基于window自带功能生成目录树
在写文档时,生成目录树是非常有必要的,可以清晰明了地用图阐释一些事情. 1 生成目录树 1.1 方案1:操作繁(只显示文件夹) 1 - win + R 2 - 输入 “CMD” ,打开命令提示窗口“ ...
- 超全!python的文件和目录操作总结
文件的基本读写 path = r'C:\Users\Brady\Documents\tmp' with open(path + r'\demo.txt', 'r', encoding='utf-8') ...
随机推荐
- Solution for link error:Cannot Open File 'python27_d.lib'
引自:http://guangboo.org/2013/01/17/solution-link-errorcannot-open-file-python27_dlib 感谢原作者 使用C调用Pytho ...
- 利用Eclipse中的Maven构建Web项目(一)
利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...
- Linux显示系统的诊断信息
Linux显示系统的诊断信息 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ dmesg [ 1.492480] EDD information not ava ...
- Java中的List转换成JSON报错(五)
1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanu ...
- 使用WebApiClient请求和管理Restful Api
前言 本篇文章的内容是WebApiClient应用说明篇,如果你没有了解过WebApiClient,可以先阅读以下相关文章: WebApi client 的面向切面编程 我来给.Net设计一款Http ...
- Matlab和C语言混合编程,包含目录的设定
如果.c文件不依赖于任何第三方库,那么mex编译很简单,只需要在matlab的命令行输入 mex test.c 即可. 但是如果这个c文件使用了第三方库文件,如opencv.gsl等等,那么就需要更改 ...
- I Hate It HDU - 1754
很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有 ...
- JavaScript设计模式(9)-享元模式
享元模式 1. 介绍 一种优化模式 适合解决因创建大量类似对象而累积性能问题 javaScript 代码可能很快就用光浏览器的内容,通过把大量独立对象转化为少量共享对象,可以降低运行 Web 应用所需 ...
- springboot入门的一点基础
什么是SpringBoot java问世20年由于,发展到现在从技术角度来说已经很成熟,开发过程中我们总是在想如何去提高团队开发规范性.减少重复配置.避免低效开发.部署发布时流程的复杂度以及第三方技术 ...
- #YCB#待做题目与填坑资料
各种填坑资料(qwq) 主席树(by YL)戳 树套树(by ZSY)戳 不要问我这些题咋来的(查大佬的水表呗) 题目列表: [HDU5977]Garden of Eden [BZOJ2752][HA ...