Как скачать файл?¶
Загрузка файла вручную¶
Во-первых, вы должны получить file_id файлу, который вы хотите скачать. Информация о файлы, отправленные боту, содержится в Message.
Например, скачайте документ, который пришел боту.
file_id = message.document.file_id
Затем воспользуйтесь методом getFile, чтобы получить file_path.
file = await bot.get_file(file_id)
file_path = file.file_path
После этого воспользуйтесь методом download_file с объекта бота.
download_file(…)¶
Загружает файл за file_path в указанное место.
Если вы хотите автоматически создать место назначения (io.BytesIO), используйте значение назначения по умолчанию и обработайте результат этого метода.
- async Bot.download_file(file_path: str | Path, destination: BinaryIO | Path | str | None = None, timeout: int = 30, chunk_size: int = 65536, seek: bool = True) BinaryIO | None[исходный код]¶
Загружает файл с file_path в указанное место.
Если вы хотите автоматически создать место назначения (io.BytesIO), используйте значение назначения по умолчанию и обработайте результат этого метода.
- Параметры:
file_path – Путь к файлу на сервере Telegram (Вы можете получить его с
litegram.types.File)destination – Ім’я файлу, шлях к файлу или экземпляр
io.IOBase. Для напр.io.BytesIO, по умолчанию нетtimeout – Общее время ожидания в секундах, по умолчанию 30
chunk_size – Розмир фрагментов файлу, по умолчанию 64 Кб
seek – Перейти в начало файлу, когда загрузка закончится. Используется только для назначения с типом
typing.BinaryIO, по умолчанию значение True
Існуе два варианта загрузка файлу: на disk или на binary I/O object.
Загрузка файлу на диск¶
Чтобы скачать файл на диск, необходимо указать имя файлу или шлях, куда его скачать. У этому случае функция ничего не вернет.
await bot.download_file(file_path, "text.txt")
Загрузка файлу в оперативну пам’ять¶
Чтобы скачать файл к оперативную память, вы должны указать объект из типом typing.BinaryIO или використати значение по умолчанию (None).
У первом случае функция вернет ваш объект:
my_object = MyBinaryIO()
result: MyBinaryIO = await bot.download_file(file_path, my_object)
# print(result is my_object) # True
Если залишити значение по умолчанию, будет створено и повернено объект io.BytesIO.
result: io.BytesIO = await bot.download_file(file_path)
Загрузка файла коротким путем¶
Каждый раз добывать file_path вручную скучно, поэтому вам следует использовать метод download.
download(…)¶
Загружает файл за file_id или Downloadable объектом в указанное место.
Если вы хотите автоматически создать место назначения (io.BytesIO), используйте значение назначения по умолчанию и обработайте результат этого метода.
- async Bot.download(file: str | Downloadable, destination: BinaryIO | pathlib.Path | str | None = None, timeout: int = 30, chunk_size: int = 65536, seek: bool = True) BinaryIO | None[исходный код]¶
Загружает файл за file_id или Downloadable объектом в указанное место.
Если вы хотите автоматически создать место назначения (io.BytesIO), используйте значение назначения по умолчанию и обработайте результат этого метода.
- Параметры:
file – file_id или Downloadable объект
destination – Ім’я файлу, шлях к файлу или экземпляр
io.IOBase. Для напр.io.BytesIO, по умолчанию нетtimeout – Общее время ожидания в секундах, по умолчанию 30
chunk_size – Розмир фрагментов файлу, по умолчанию 64 Кб
seek – Перейти в начало файлу, когда загрузка закончится. Используется только для назначения с типом
typing.BinaryIO, по умолчанию значение True
Он отличается от download_file только тем, что принимает file_id или Downloadable объект (объект, который содержит атрибут file_id) вместо file_path.
Вы можете скачать файл на disk или в binary I/O object так же.
Пример:
document = message.document
await bot.download(document)