Cum să salvați fișierele atașate din OneNote în Python
Fișierele OneNote .one pot conține atașamente de fișiere încorporate: orice tip de fișier care a fost inserat într-o pagină utilizând Insert → File Attachment în OneNote. Aspose.Note FOSS for Python expune acestea prin clasa AttachedFile, care furnizează numele original al fișierului și octeții brute ai fișierului încorporat.
Cerințe preliminare
pip install aspose-notePasul 1: Încarcă documentul
from aspose.note import Document
doc = Document("MyNotes.one")Pasul 2: Găsiți toate fișierele atașate
Utilizați GetChildNodes(AttachedFile) pentru a colecta recursiv fiecare atașament din document, indiferent de pagina sau schița în care apare:
from aspose.note import Document, AttachedFile
doc = Document("MyNotes.one")
attachments = doc.GetChildNodes(AttachedFile)
print(f"Found {len(attachments)} attachment(s)")Pasul 3: Salvați fiecare atașament pe disc
Accesați af.Bytes pentru conținutul brut al fișierului și af.FileName pentru numele original. Întotdeauna protejați-vă împotriva unui nume de fișier None: biblioteca returnează None când metadatele numelui fișierului nu au fost stocate în fișier:
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)")Exemplu complet
Acest script extrage toate atașamentele dintr-un fișier .one și le salvează într-un director de ieșire dedicat:
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")Note
af.Bytesreturneazăb""(bytes goi) când datele atașamentului nu au putut fi analizate din fișierul binar. Verificațilen(af.Bytes) > 0înainte de a salva dacă doriți să omiteți atașamentele goale.af.Tagseste o listă de obiecteNoteTagdacă atașamentul are aplicate etichete OneNote.- Aspose.Note FOSS pentru Python citește fișierele
.one, dar nu scrie înapoi în.one. Nu puteți crea sau modifica atașamente.