Wie man beigefügte Dateien von OneNote in Python speichert

Wie man beigefügte Dateien von OneNote in Python speichert

OneNote .one Dateien können eingebettete Dateiauflagen enthalten: jeder Dateityp, der in eine Seite mit dem Einfügen → Dateianlage in OneNote. Aspose.Note FOSS für Python zeigt diese durch die AttachedFile Die Datenbank wird von der Klasse “Class” erstellt, die den ursprünglichen Dateinamen und die Rohbyte der eingebetteten Datei enthält.


Voraussetzungen für die Durchführung der Maßnahmen

pip install aspose-note

Schritt 1: Laden des Dokuments ein

from aspose.note import Document

doc = Document("MyNotes.one")

Schritt 2: Alle angehängten Dateien finden

Verwendung GetChildNodes(AttachedFile) die Rekursivberechnung aller Anhänge des Dokuments, unabhängig davon, auf welcher Seite oder in welchem Umriss sie erscheinen:

from aspose.note import Document, AttachedFile

doc = Document("MyNotes.one")
attachments = doc.GetChildNodes(AttachedFile)
print(f"Found {len(attachments)} attachment(s)")

Schritt 3: Speichern Sie jede Anlage auf Festplatte

Zugang zu den Informationen af.Bytes für den Rohbestand und af.FileName Ich habe den Namen des Verbandes für die Originalbezeichnung verwendet. None Dateiname: die Bibliothek gibt zurück None wenn die Datennamen-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 von einem .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")

Anmerkungen

  • af.Bytes Rückgabe b"" (leere Bytes), wenn die Anlage-Daten nicht aus der binären Datei parsiert werden konnten. len(af.Bytes) > 0 Bevor Sie speichern, wenn Sie leere Anlagen überspringen möchten.
  • af.Tags ist eine Liste von NoteTag Objekte, wenn die Anlage mit OneNote-Tags versehen ist.
  • Aspose.Note FOSS for Python reads .one Dateien, aber nicht zurückschreiben auf .one.Sie können keine Anhänge erstellen oder ändern.

Siehe auch:

 Deutsch