Wie man angehängte Dateien aus OneNote in Python speichert
OneNote .one-Dateien können eingebettete Dateianhänge enthalten: jeder Dateityp, der über Einfügen → Dateianhang in OneNote in eine Seite eingefügt wurde. Aspose.Note FOSS for Python stellt diese über die AttachedFile-Klasse bereit, die den ursprünglichen Dateinamen und die Rohbytes der eingebetteten Datei liefert.
Voraussetzungen
pip install aspose-noteSchritt 1: Dokument laden
from aspose.note import Document
doc = Document("MyNotes.one")Schritt 2: Alle angehängten Dateien finden
Verwenden Sie GetChildNodes(AttachedFile), um rekursiv jede Anlage im Dokument zu sammeln, unabhängig davon, auf welcher Seite oder Gliederung sie erscheint:
from aspose.note import Document, AttachedFile
doc = Document("MyNotes.one")
attachments = doc.GetChildNodes(AttachedFile)
print(f"Found {len(attachments)} attachment(s)")Schritt 3: Jeden Anhang auf die Festplatte speichern
Greifen Sie auf af.Bytes zu, um den rohen Dateiinhalts zu erhalten, und auf af.FileName für den ursprünglichen Namen. Schützen Sie sich immer vor einem None Dateinamen: Die Bibliothek gibt None zurück, wenn die Dateinamen‑Metadaten nicht in der Datei gespeichert wurden:
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)")Vollständiges Beispiel
Dieses Skript extrahiert alle Anhänge aus einer .one‑Datei und speichert sie in einem dedizierten Ausgabeverzeichnis:
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")Hinweise
af.Bytesgibtb""(leere Bytes) zurück, wenn die Anhangsdaten nicht aus der Binärdatei geparst werden konnten. Prüfen Sielen(af.Bytes) > 0vor dem Speichern, wenn Sie leere Anhänge überspringen möchten.af.Tagsist eine Liste vonNoteTag‑Objekten, falls dem Anhang OneNote‑Tags zugewiesen sind.- Aspose.Note FOSS für Python liest
.one‑Dateien, schreibt jedoch nicht zurück nach.one. Sie können keine Anhänge erstellen oder ändern.