Я работаю над функциями Azure в когнитивном поиске Azure.

Мое требование состоит в том, чтобы получить документы, хранящиеся в хранилище больших двоичных объектов Azure, в качестве входных данных для функции azure python и разделить документ на разделы с помощью python docx. > модуль и сохраните разделы в хранилище таблиц Azure.

Когда я пытаюсь передать путь к большому двоичному объекту в качестве аргумента документа, я получаю сообщение Ошибка "Пакет не найден". Как получить путь к большому двоичному объекту в функции Python Azure.

Но код отлично работает в моей Python IDE локально с модулем docx.

Я использую Python 3.7.1

Код ВС 1.43.2

Документ 0.8.10

Функция Azure 2

Пожалуйста, помогите мне. Заранее спасибо.

Мой код:

import logging
import docx
import azure.functions as func
def main(myblob: func.InputStream,outputtable: func.Out[str]):
    logging.info(f"Python blob trigger function processed blob \n"
             f"Name: {myblob.name}\n" f"Name: {type(myblob.name)}")
    doc=docx.Document(myblob.name)
0
Dhanasekaran R 7 Апр 2020 в 15:15
Можете ли вы показать код? Иначе трудно будет помочь.
 – 
Cindy Pau
8 Апр 2020 в 04:10
Привет, BowmanZhu, спасибо за ответ. Не могли бы вы сказать, как получить путь к документу, который хранится в хранилище больших двоичных объектов Azure.
 – 
Dhanasekaran R
8 Апр 2020 в 10:54

1 ответ

См. конструктор документов.

docx.Document (docx = Нет)

Возвращает объект Document, загруженный из docx, где docx может быть либо путем к файлу .docx (строка), либо файлоподобным объектом. Если docx отсутствует или отсутствует, загружается встроенный по умолчанию «шаблон» документа.

При этом, обратившись к официальной документации: Использование, вы можете получить доступ к данным большого двоичного объекта только через параметр, введенный как InputStream в function.

Таким образом, здесь нет прямого пути, что вам нужно сделать, это Открытие документа, похожего на файл.

0
Jack Jia 8 Апр 2020 в 12:38
Привет, Джек. Когда я пытался использовать файл, подобный документу, я получаю сообщение об ошибке «TypeError: ожидаемая строка, байты или объект os.PathLike, а не объект InputStream». Не могли бы вы сказать, что это значит.
 – 
Dhanasekaran R
8 Апр 2020 в 13:42
Как видно из сообщения, он не принимает поток. Но он принимает байты, поэтому вы можете сначала прочитать все содержимое большого двоичного объекта как байты.
 – 
Jack Jia
8 Апр 2020 в 13:45