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.Bytesrenvoieb""(octets vides) lorsque les données de la pièce jointe n’ont pas pu être analysées à partir du fichier binaire. Vérifiezlen(af.Bytes) > 0avant d’enregistrer si vous souhaitez ignorer les pièces jointes vides.af.Tagsest une liste d’objetsNoteTagsi la pièce jointe possède des balises OneNote appliquées.- Aspose.Note FOSS for Python lit les fichiers
.onemais n’écrit pas dans.one. Vous ne pouvez pas créer ou modifier des pièces jointes.