python循环遍历word,Python遍历文件写入word

本文记录了一位程序员使用Python遍历项目中的Java文件并将内容写入Word文档的过程。通过引入python-docx库,解决了文件遍历、读取和写入Word的难题,同时解决了路径和文件类型的处理问题。
部署运行你感兴趣的模型镜像

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

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

2a09132f5d70

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教程看看,找到了下面这句话,理解一下代码,把需要传路径的地方替换下就行啦

2a09132f5d70

廖大的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')

2a09132f5d70

报错截图1

2a09132f5d70

报错截图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')

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值