一个可以选择目录生成doc目录内容的小工具(六) -新思路的pythondox编号方案

摘要:
so不啰嗦了,接上(四)小节,我改了一版思路就是创建一个arraylist存放编号信息,目录迭代中使用n判断目录广度,depth判断目录深度,在获取目录内容名称的时候直接+上编号形成新的str,使用python-docx写到word文件中。

回到一
目录遍历是一个经典话题,比较有经验的工程师都折腾过。so不啰嗦了,接上(四)小节,我改了一版
思路就是创建一个arraylist存放编号信息,目录迭代中使用n判断目录广度,depth判断目录深度,在获取目录内容名称的时候直接+上编号形成新的str,使用python-docx写到word文件中。
ps:对以前的思路感到无比的羞愧~~~

import os

numlist1 = ['一、','二、','三、','四、','五、','六、','七、','八、','九、','十、']
numlist2 = ['(一)、', '(二)、', '(三)、', '(四)、', '(五)、', '(六)、', '(七)、', '(八)、', '(九)、', '(十)、']
numlist3 = ['1、','2、','3、','4、','5、','6、','7、','8、','9、','10、']
arrylist = [numlist1,numlist2,numlist3]

#n判断目录广度,depth判断目录深度
def showdir(path, depth,n = 0):

    for item in os.scandir(path):
        num = arrylist[depth][n]
        name = num+item.name
        print("|     " * depth + "+--" + name)
        #递归出口
        if item.is_dir():
            showdir(item.path, depth + 1)
        n += 1

if __name__ == '__main__':
    showdir(r'C:UserszhaobwDesktop测试用例',0)

完全版的代码(抽象自己做吧)


from tkinter import *
from tkinter.filedialog import askdirectory
import tkinter.messagebox

from docx import Document
from docx.enum.style import WD_STYLE_TYPE
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docx.shared import Inches, Pt, RGBColor

import os

#初始化doc对象、
def Init():
    global doc
    doc = Document()
    doc.styles["Normal"].font.name = u'宋体'
    doc.styles["Normal"].font.size = Pt(12)
    doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    doc.styles["heading 1"].font.size=Pt(20)


    name = doc.add_paragraph()
    run = name.add_run(r'本周主要内容')
    run.font.size = Pt(25)
    run.font.name = u"宋体"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    name.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

    # head = doc.add_heading("", level=1)
    # run = head.add_run(u"主要内容")
    # run.font.size = Pt(12)
    # run.font.color.rgb = RGBColor(0, 0, 0)
    # run.font.name = u"宋体"
    # run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    # head.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

def Save(dst):
    global doc
    try:
        doc.save(dst)
        return True
    except IOError as e:
        last_err = e.strerror
        return False

#目录遍历逻辑部分
numlist1 = ['一、','二、','三、','四、','五、','六、','七、','八、','九、','十、']
numlist2 = ['(一)、', '(二)、', '(三)、', '(四)、', '(五)、', '(六)、', '(七)、', '(八)、', '(九)、', '(十)、']
numlist3 = ['1、','2、','3、','4、','5、','6、','7、','8、','9、','10、']
arrylist = [numlist1,numlist2,numlist3]

#增加标题,本文的目录识别内容全部是标题形式。如果改成正文也是可以的,但是得手工设置缩进。
def Addhead(text):
    head = doc.add_heading("")
    run = head.add_run(text)
    run.font.name = u"宋体"
    run.font.color.rgb = RGBColor(0, 0, 0)

def AddText(text):
    name = doc.add_paragraph()
    run = name.add_run(text)
    run.font.size = Pt(15)
    run.font.name = u"宋体"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

Init()

def showdir(path, depth = 0,n = 0):
    for item in os.scandir(path):
        num = arrylist[depth][n]
        name = num + item.name
        # print("|     " * depth + "+--" + name)
        #写入word
        # Addhead(name)
        AddText(name)
        #递归出口
        if item.is_dir():
            showdir(item.path, depth + 1)
        n += 1


def createdoc(path):
    file = path + os.sep + '本周主要内容.docx'
    Save(file)


#GUI
#选择路径
def selectPath():
    path_ = askdirectory()
    guipath.set(path_)

def outPut():
    showdir(guipath.get())
    createdoc(guipath.get())
    tkinter.messagebox.showinfo('提示', '导出完成')
    root_window.destroy()

# 创建窗口对象
root_window = Tk()
root_window.title('目录内容识别工具')
root_window.geometry('300x100')


#路径地址
guipath = StringVar()

Label(root_window,text = "目标路径:").grid(row = 0, column = 0)

#textvariable关联一个StringVar类,可以用set()和get()函数去设置和获取控件中的值
Entry(root_window, textvariable = guipath).grid(row = 0, column = 1)

Button(root_window, text = "选择", command = selectPath,width=6).grid(row = 0, column = 2)
Button(root_window, text = "导出", command= outPut ,width=6).grid(row = 0, column = 3)

#进入消息循环,没这个不显示



if __name__ == '__main__':
    root_window.mainloop()

免责声明:文章转载自《一个可以选择目录生成doc目录内容的小工具(六) -新思路的pythondox编号方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]iOS/iphone开发如何为苹果开发者帐号APPID续费用 ThreadPoolExecutor/ThreadPoolTaskExecutor 线程池技术提高系统吞吐量(附带线程池参数详解和使用注意事项)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Directx10,11的SwapChain,RenderTarget和DepthBuffer解释

在开始学Directx10,11时,有几个常见的概念,或变量如SwapChain,RenderTarget,Depth Buffer都有点似懂非懂,很多时候都是依样画葫芦。写的多了,加上看了SDK和《Intro to d3d10》后,最近突然焕然大悟。记录分享下。 1:SwapChain。 SwapChain这个概念还是比较容易懂的,主要负责维护几个表面(...

NPOI 2.0导出word(docx格式)

大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下。 NPOI里面认为word文档的最基本的结构是段落,代表这个段落的类就是XWPFParagraph,使用这个类可以设置段落里面的字体、大小、以及是否加粗等。 代表整个文档的的类XWPFDocument,是...

java Document生成和解析xml

转自:https://blog.csdn.net/p812438109/article/details/81807440 Document场景:需要知道文档所有结构           需要把文档一些元素排序          文档中的信息被多次使用的情况 优势:由于Document是java中自带的解析器,兼容性强 缺点:由于Document是一次性加载...

android使用POI读写word doc文件

目录 1 读word doc文件 1.1 通过WordExtractor读文件 1.2 通过HWPFDocument读文件 2 写word doc文件 Apache poi的hwpf模块是专门用来对word doc文件进行读写操作的。在hwpf里面我们使用HWPFDocument来表示一个word doc文档。在HWPFDocument里面有这么几个概念:...

java操作xm——添加、修改、删除、遍历

package com.xml.zh; import javax.xml.parsers.*; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.Tr...

(转)Android Studio 增加函数注释模板

此篇文章主要介绍如何在Android Studio中函数如何添加注释,使其和eclipse一样方便的添加注释 Android Studio默认函数注释为 /** * */ 下面方法将要改为如下格式 1 2 3 4 5 /**  *  * @author zony  * @time 15-11-25 下午2:41  */...