Python遍历文件写入word

最近腾讯开放平台上架管理的比较严,需要软件著作权,申请软件著作权又需要五万行项目代码,想想就头大,正好最近在学习Python,好歹也是个程序员,这种重复性的工作,当然是要用程序解决咯,就写了一个遍历项目包下java文件并写入一个word文件的小脚本,脚本很简单,一个Python熟手应该不到二十分钟就能写完,但是自己写了快一个上午,所以在这里把自己的思考问题解决问题的整个过程记录下来,方便自己回顾复盘,如果能有人提出我思路上的不足,就更好了

简单介绍一下自己的Python环境,Python版本:3.6.3,IDE:PyCharm,这里非常建议用PyCharm,简单方便,尤其是安装一些包,直接用类似androidstudio的插件选项即可,如下图,不需要自己在命令行pip,容易出各种错误,感觉比起折腾各种环境,还是打代码更愉快啊。


Python遍历文件写入word_第1张图片
PyCharm的包管理.png

首先找一个能操作word的Python包,这里我百度到的是python-docx,简单看了一下,语法简单,基本满足我们的需要,下一步是想办法遍历我们的android项目,一般的结构都是树形结构,这里虽说学过Python,可是不经常联系已经把IO部分全部忘记,所以百度一个Python遍历文件的代码,找到了下面这个东西,嗯,listdir应该是遍历文件夹,那么pathDir就是文件的列表,循环列表,os.path.join什么鬼完全忘记了,百度一下,合成一个路径,ok了解。

def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    for allDir in pathDir:
        child = os.path.join('%s%s' % (filepath, allDir))
        print child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题

找到了遍历文件代码,下一步是把文件读出来,嗯......忘了,去找廖大的Python教程看看,找到了下面这句话,理解一下代码,把需要传路径的地方替换下就行啦


Python遍历文件写入word_第2张图片
廖大的Python教程截图

好的,下一步是把这些东西写到word文件里面,找python-docx文档,看看这个库怎么用

整理一下代码:运行,报错(需要注意的是 'E:/zyd2017/TianHongBauMu/app/src/main/java/com/xxx/xxx'这里用的是“ / ”而不是“ \ ”,在Python里面“ \ ”有特殊的含义,我在这里调试了很久...大概我是傻的吧)

import os
from docx import Document

def ergodicFile(document , path):
    fileLists = os.listdir(path)
    for fileItem in fileLists:
        filePath = path + "/" + fileItem
        print("filePath:" + filePath)
        with open(filePath , 'r', encoding='UTF-8') as readContent:
            document.add_paragraph(readContent.read())

document = Document()
ergodicFile(document , 'E:/zyd2017/TianHongBauMu/app/src/main/java/com/xxx/xxx')
document.save('test.docx')
       
Python遍历文件写入word_第3张图片
报错截图1
报错截图2

Permission denied,什么情况,是文件权限不允许吗?百度下,管理员身份运行脚本?这个好难...再去看看报错日志,看一下路径,等下为什么是个文件夹不是java文件呢,这时候想起来自己遍历的是树形结构,¥%&……#&……,好吧,判断一下是不是java文件,然后一个递归解决掉这个问题,运行,完美

import os
from docx import Document

def ergodicFile(document , path):
    fileLists = os.listdir(path)
    for fileItem in fileLists:
        filePath = path + "/" + fileItem
        print("filePath:" + filePath)
        if filePath.endswith(".java"):
            with open(filePath , 'r', encoding='UTF-8') as readContent:
                document.add_paragraph(readContent.read())
        else:
            print("not endwith filePath:" + filePath)
            ergodicFile(document , filePath)


document = Document()
ergodicFile(document , 'E:/zyd2017/TianHongBauMu/app/src/main/java/com/xxx/xxx')
document.save('test.docx')

你可能感兴趣的:(Python遍历文件写入word)