该脚本主要针对自动化办公的使用,可以获取目录下所有word(.doc,.docx)的文件的属性获取并导出为excal表格.
首先先公布该脚本的源代码方便大家如果有需要进行改进的地方进行修改,
程序使用的是python语言编写,操作简单。
import os
import pprint
from docx import Document
import pandas as pd
import win32com.client
import pytz
from datetime import datetime
import win32timezone
def get_file_names(path, suffixes):
file_names = []
file_paths = []
for root, dirs, files in os.walk(path, topdown=False):
# 跳过隐藏目录
dirs[:] = [d for d in dirs if not d.startswith('.')]
for name in files:
if not name.startswith('.') and os.path.splitext(name)[1].lower() in suffixes:
file_names.append(name)
file_paths.append(os.path.join(root, name))
pprint.pprint(file_paths)
pprint.pprint(file_names)
return file_names, file_paths
def read_doc_properties(word, file_path):
doc = word.Documents.Open(file_path)
author = doc.BuiltInDocumentProperties("Author").Value
last_modified_by = doc.BuiltInDocumentProperties("Last Author").Value
last_modified_time = doc.BuiltInDocumentProperties("Last Save Time").Value
# 转换为北京时间
if last_modified_time:
last_modified_time = last_modified_time.astimezone(pytz.timezone('Asia/Shanghai'))
doc.Close(False)
return author, last_modified_by, last_modified_time
def read_docx_properties(docx_file):
doc = Document(docx_file)
properties = doc.core_properties
# 读取属性
author = properties.author
last_modified_by = properties.last_modified_by
last_modified_time = properties.modified
# 转换为北京时间
if last_modified_time:
last_modified_time = last_modified_time.astimezone(pytz.timezone('Asia/Shanghai'))
return author, last_modified_by, last_modified_time
def main():
path=input("请输入你要搜寻的文件目录:")
# path = r'C:\Users\86135\Desktop\python总结' # 确保路径格式正确
suffixes = ['.doc', '.docx']
file_names, file_paths = get_file_names(path, suffixes)
data = []
word = win32com.client.Dispatch('Word.Application')
try:
for file_path in file_paths:
ext = os.path.splitext(file_path)[1].lower()
try:
if ext == '.docx':
author, last_modified_by, last_modified_time = read_docx_properties(file_path)
elif ext == '.doc':
author, last_modified_by, last_modified_time = read_doc_properties(word, file_path)
data.append({
"文件路径": file_path,
"作者": author,
"最后编辑人": last_modified_by,
"最后修改时间": last_modified_time.strftime('%Y-%m-%d %H:%M:%S') if last_modified_time else None
})
except Exception as e:
print(f"处理文件时出错: {e}, 文件路径: {file_path}")
except Exception as e:
print(f"初始化 Word 应用程序时出错: {e}")
finally:
word.Quit()
# 创建 DataFrame
df = pd.DataFrame(data)
# 将 DataFrame 导出到 Excel
output_path=input("请输入你要保存的.xlsx的表格位置:")
# output_path = r'D:\output10.xlsx' # 你想保存的 Excel 文件路径
df.to_excel(output_path, index=False)
print(f"数据已成功导出到 {output_path}")
if __name__ == "__main__":
main()
input("是否关闭黑色命令窗口:")
get_file_names函数会获取你需要查找目录下所有的word文件的文件名和文件位置;
read_doc_properties,read_docx_properties分别会获取doc文件和docx文件的属性,如何你需要更改你的具体功能,可重点对这进行修改。
因为仅仅只是一段脚本,受限于环境的限制,所以我将其打包成一个.exe的Windows可执行文件,方便大家在电脑上使用。
软件的下载地址我发在文末。
软件的使用方法如下,首先你需要对下载好的软件进行解压缩。
然后打开解压缩的文件夹,大概是这样:
然后打开dist文件夹,以管理员身份运行软件:
进入后会显示一个黑色窗口问你要搜寻的文件目录,假如我要查找D盘下所有的word文件的属性,需要:
1.复制D盘的位置
2:粘贴在黑色窗口里:
然后回车,就会显示所有word文件的位置和文件名
如果有错误,消息会弹在黑色窗口中,需要你找到文件位置自行在随后的excal表格中进行修改
最后会弹出你要保存的excal表格的位置,
你只需要写入你保存的位置+你命名的文件名+.xlsx
回车就可以
例如:D:\aaa.xlsx
如果显示数据已成功导出,就表示运行成功
这时你可以在你刚才保存的位置打开这个excal表格:
需要注意的是:
1.如果有错误消息弹出,你需要比对excal表格进行修改:
2.导出的excal表格必须加上.xlsx的后缀
3.如果word文件比较大,超过100个,运行的时间可能比较长,请耐心等待
软件的下载链接为:
https://wwt.lanzouo.com/imXSw25sccdi