Wie man angehängte Dateien aus OneNote in Python speichert

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-note

Schritt 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.Bytes gibt b"" (leere Bytes) zurück, wenn die Anhangsdaten nicht aus der Binärdatei geparst werden konnten. Prüfen Sie len(af.Bytes) > 0 vor dem Speichern, wenn Sie leere Anhänge überspringen möchten.
  • af.Tags ist eine Liste von NoteTag‑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.

Siehe auch

 Deutsch