美文网首页
Python遍历文件写入word

Python遍历文件写入word

作者: Zero零夜 | 来源:发表于2017-11-27 14:59 被阅读49次

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

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


    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文件里面,找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')
           
    
    报错截图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

          本文链接:https://www.haomeiwen.com/subject/qzzrbxtx.html