Maison >développement back-end >Tutoriel Python >Comment lire un fichier pdf ou pptx ou docx à partir d'ADLS gen2 en python à l'aide de Synapse ?
Je souhaite utiliser Python dans Synapse Notebook pour lire des fichiers dans différents formats. Ceux-ci incluent .pdf, .pptx, .docx, .msg et .eml. Je veux pouvoir lire des fichiers, puis les analyser et les manipuler avec Python. J'ai pu le faire dans des blocs de données en utilisant différentes bibliothèques Python.
Voici comment j'accomplis cette tâche en briques de données :
from pptx import Presentation prs = Presentation(file_name) # for pdf from pypdf import PdfReader reader = PdfReader(open(filename, 'rb')) # word docs import docx doc = docx.Document(file_name) # .eml files import email msg = email.message_from_file(open(file_name))type here # .msg files import extract_msg msg = extract_msg.Message(file_name)
Dans synapse, j'obtiens l'erreur : FileNotFoundError : [errno 2] Aucun fichier ou répertoire de ce type.
Ces chemins de fichiers peuvent lire des données csv, excel ou txt à l'aide de spark ou de pandas, donc je ne pense pas qu'il y ait de problème d'autorisation ou de connexion. Le format est : abfs[s]://file_system_name@account_name.dfs.core.windows.net/file_path
J'ai également essayé de monter l'emplacement de stockage. Cela facilite la lecture des fichiers texte, mais pas d'autres formats. Monter l'emplacement de stockage dans synapse
le montage est la bonne manière, cette réponsel'explique. J'utilise Synapse Studio. La clé est d'utiliser le format de fichier obtenu à partir de la commande path vers le stockage monté. Sinon, je peux essentiellement utiliser ce que j'ai mentionné précédemment dans la question. Uniquement pour le pdf, j'ai dû passer de l'utilisation de la bibliothèque pypdf à pypdf2.
Le format valide est :
path = mssparkutils.fs.getmountpath("/mounted_name") # this gave me this format '/synfs/{jobid}/mounted_path/{filename}'
Le format obtenu à partir de mssparkutils fs ne fonctionne pas
mssparkutils.fs.ls("synfs:/{jobId}/mounted_path/") # this gave a different format which did not work 'synfs:/{jobId}/mounted_path/{filename}'
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!