Cách Lưu Tệp Đính Kèm Từ OneNote trong Python
Các tệp OneNote .one có thể chứa các tệp đính kèm nhúng: bất kỳ loại tệp nào được chèn vào một trang bằng cách sử dụng Insert → File Attachment trong OneNote. Aspose.Note FOSS cho Python cung cấp chúng thông qua lớp AttachedFile, lớp này cung cấp tên tệp gốc và các byte thô của tệp nhúng.
Điều kiện tiên quyết
pip install aspose-noteBước 1: Tải tài liệu
from aspose.note import Document
doc = Document("MyNotes.one")Bước 2: Tìm Tất Cả Các Tệp Đính Kèm
Sử dụng GetChildNodes(AttachedFile) để thu thập đệ quy mọi tệp đính kèm trong tài liệu, bất kể chúng xuất hiện trên trang hay đề mục nào:
from aspose.note import Document, AttachedFile
doc = Document("MyNotes.one")
attachments = doc.GetChildNodes(AttachedFile)
print(f"Found {len(attachments)} attachment(s)")Bước 3: Lưu mỗi tệp đính kèm vào đĩa
Truy cập af.Bytes để lấy nội dung tệp thô và af.FileName để lấy tên gốc. Luôn bảo vệ trước một tên tệp None: thư viện trả về None khi siêu dữ liệu tên tệp không được lưu trong tệp:
from aspose.note import Document, AttachedFile
doc = Document("MyNotes.one")
for i, af in enumerate(doc.GetChildNodes(AttachedFile), start=1):
name = af.FileName or f"attachment_{i}.bin"
with open(name, "wb") as f:
f.write(af.Bytes)
print(f"Saved: {name} ({len(af.Bytes):,} bytes)")Ví dụ hoàn chỉnh
Kịch bản này trích xuất tất cả các tệp đính kèm từ tệp .one và lưu chúng vào một thư mục đầu ra riêng biệt:
from pathlib import Path
from aspose.note import Document, AttachedFile
def save_all_attachments(one_path: str, out_dir: str = "attachments") -> None:
doc = Document(one_path)
out = Path(out_dir)
out.mkdir(exist_ok=True)
attachments = doc.GetChildNodes(AttachedFile)
if not attachments:
print("No attachments found.")
return
for i, af in enumerate(attachments, start=1):
name = af.FileName or f"attachment_{i}.bin"
dest = out / name
dest.write_bytes(af.Bytes)
print(f" [{i}] {name} ({len(af.Bytes):,} bytes)")
print(f"\nSaved {len(attachments)} file(s) to '{out_dir}/'")
save_all_attachments("MyNotes.one")Ghi chú
af.Bytestrả vềb""(byte rỗng) khi dữ liệu đính kèm không thể phân tích từ tệp nhị phân. Kiểm tralen(af.Bytes) > 0trước khi lưu nếu bạn muốn bỏ qua các tệp đính kèm rỗng.af.Tagslà một danh sách các đối tượngNoteTagnếu tệp đính kèm có bất kỳ thẻ OneNote nào được áp dụng.- Aspose.Note FOSS for Python đọc các tệp
.onenhưng không ghi lại vào.one. Bạn không thể tạo hoặc sửa đổi các tệp đính kèm.