extract_office.py
#!/usr/bin/env python3
"""
解压缩 Office Open XML 文件并查看内容
"""
import os
import zipfile
def extract_office_file(file_path: str, output_dir: str) -> None:
"""
解压缩 Office Open XML 文件
Args:
file_path: 输入文件路径
output_dir: 输出目录
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
try:
with zipfile.ZipFile(file_path, 'r') as zip_ref:
zip_ref.extractall(output_dir)
print(f"文件解压缩成功,输出到: {output_dir}")
except Exception as e:
print(f"解压缩失败: {e}")
def list_office_contents(file_path: str) -> None:
"""
列出 Office Open XML 文件的内容
Args:
file_path: 文件路径
"""
try:
with zipfile.ZipFile(file_path, 'r') as zip_ref:
print("文件内容列表:")
for file_name in zip_ref.namelist():
print(f" - {file_name}")
except Exception as e:
print(f"读取文件内容失败: {e}")
if __name__ == "__main__":
file_path = "/root/.openclaw/media/inbound/面上项目-正文-2026---4cdee90a-5d04-451f-bd2c-0eff9dbaa7fc"
output_dir = "/root/.openclaw/workspace/office_content"
print("列出文件内容:")
list_office_contents(file_path)
print("\n解压缩文件:")
extract_office_file(file_path, output_dir)
print("\n检查解压后的文件:")
if os.path.exists(output_dir):
for root, dirs, files in os.walk(output_dir):
level = root.replace(output_dir, '').count(os.sep)
indent = ' ' * 2 * (level)
print(f'{indent}{os.path.basename(root)}/')
subindent = ' ' * 2 * (level + 1)
for file in files:
print(f'{subindent}{file}')