Comment enregistrer les fichiers joints depuis OneNote en Python

Comment enregistrer les fichiers joints depuis OneNote en Python

Les fichiers OneNote .one peuvent contenir des pièces jointes de fichiers intégrées : tout type de fichier qui a été inséré dans une page à l’aide de Insert → File Attachment dans OneNote. Aspose.Note FOSS for Python les expose via la classe AttachedFile, qui fournit le nom de fichier original et les octets bruts du fichier intégré.


Prérequis

pip install aspose-note

Étape 1 : Charger le document

from aspose.note import Document

doc = Document("MyNotes.one")

Étape 2 : Trouver tous les fichiers joints

Utilisez GetChildNodes(AttachedFile) pour collecter récursivement chaque pièce jointe du document, quel que soit la page ou le plan où elle apparaît :

from aspose.note import Document, AttachedFile

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

Étape 3 : Enregistrer chaque pièce jointe sur le disque

Accédez à af.Bytes pour le contenu brut du fichier et à af.FileName pour le nom d’origine. Protégez toujours contre un nom de fichier None : la bibliothèque renvoie None lorsque les métadonnées du nom de fichier n’ont pas été stockées dans le fichier :

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)")

Exemple complet

Ce script extrait toutes les pièces jointes d’un fichier .one et les enregistre dans un répertoire de sortie dédié :

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")

Notes

  • af.Bytes renvoie b"" (octets vides) lorsque les données de la pièce jointe n’ont pas pu être analysées à partir du fichier binaire. Vérifiez len(af.Bytes) > 0 avant d’enregistrer si vous souhaitez ignorer les pièces jointes vides.
  • af.Tags est une liste d’objets NoteTag si la pièce jointe possède des balises OneNote appliquées.
  • Aspose.Note FOSS for Python lit les fichiers .one mais n’écrit pas dans .one. Vous ne pouvez pas créer ou modifier des pièces jointes.

Voir aussi

 Français