友人が教育用の手書き新聞を扱っています。文書がたくさんあります。ファイルを開いてサイズを確認するのは非常に面倒です。分類しやすくするために、文書をサイズごとに分類し、対応するディレクトリに置く機能を作りました。PyQt5 + Python を使用して作成しました。コアコードは、皆で共有できるように以下に掲載します。この記事は個人的な創作です。転載する場合は、出典を明記してください。
# 循环读取指定目录下的所有文件
for root,dirs,files in os.walk(UI.filePath.text()):
for file in files:
try:
# 如果文件名最后4个字符不是docx则跳过
# 由于是使用的python-docx插件,所以只能处理docx格式的文档
if file[-4:] != "docx":
continue
# 使用python-docx的Document方法打开一个文档
doc = Document("/".join([root,file]))
# 直接从sections._document_elm.sectPr_lst[0].page_width读取文档的宽度信息
# 其中/36000 是一个经验,是先根据A4文档的210*297倒推出来的比例
width = int(doc.sections._document_elm.sectPr_lst[0].page_width / 36000)
height = int(doc.sections._document_elm.sectPr_lst[0].page_height / 36000)
# 将width和height值作为新文件夹的名称
outPath = UI.outPath.text() + str(width) + "x" + str(height)
# 如果新的目录不存在则新建
if not os.path.exists(outPath):
os.makedirs(outPath)
if outPath[-1] != "/":
outPath += "/"
# 将文档移到新建的目录中
shutil.move("/".join([root,file]),outPath + file)
print("文件:{} 宽:{} 高:{}".format("/".join([root,file]), width, height))
except:
continue
# 由于使用的是PyQt5制作的界面,所以使用QMessageBox进行提示
QMessageBox.about(main, "完成", "分类已完成!")