Как загрузить файлы на Яндекс Диск, с помощью Python

Статьи

Как загрузить файлы на Яндекс Диск, с помощью Python

Автор: Рамис, 21 сентября 2019

Приветствую всех, в этом уроке речь пойдет о Яндекс.Диске, а именно о работе с ней через Python. Данный урок будет полезен для новичков, в качестве примера напишем небольшую программу, и научим ее загружать не только файлы, но и папки с содержимым.

Яндекс.Диск REST API

Для начала получим токен, который необходим для работы с API Диском. Для этого перейдем по ссылке и зарегистрируем наше приложение, назовём его к примеру, backup, и дадим ему полное разрешение для работы с Я.Диском.

API Яндекс Диск

API Яндекс Диск

Теперь нужно просто перейти по этой ниже ссылке, заменив ID приложения на свой (ID вы получили после регистрации приложения), и токен готов.

https://oauth.yandex.ru/authorize?response_type=token&client_id=<id_приложения>

Python

Для работы с Я.Диск REST API будем использовать уже готовую библиотеку, установим ее командой.

pip install yadisk

Попробуем подключиться к нашему Я.Диску используя ранее полученный токен.

import yadisk
y = yadisk.YaDisk(token="токен")
print(y.check_token()) # Проверим токен

Вывод

True

Если результат True, значит вы все сделали правильно :)

Добавим еще небольшой код, который отправит несколько файлом, и создаст папку на Я.Диске.

y.mkdir("/test/Hello Word") # Создать папку
y.upload("file1.txt", "/test/file1.txt") # Загружает первый файл
y.upload("file2.txt", "/test/file2.txt") # Загружает второй файл

Результат.

загрузить файлы на Яндекс

Всё работает отлично, мы смогли загрузить наши файлы и создать папку.

Усложним задачу, и попробует не создать, а отправить всю папку с содержимым, так скажем, сделать backup данных.

import yadisk
import os
from datetime import datetime

y = yadisk.YaDisk(token="токен")

def run(path):
    date = datetime.strftime(datetime.now(), "%d.%m.%Y-%H.%M.%S")
    y.mkdir(f'/test/{date}')

    for address, dirs, files in os.walk(path):
        for dir in dirs:
            y.mkdir(f'/test/{date}/{dir}')
            print(f'Папка {dir} создана')
        for file in files:
            print(f'Файл {file} загружен')
            y.upload(f'{address}/{file}', f'/test/{date}/{file}')

if __name__ == '__main__':
    run(r'C:\folder\путь к папке для загрузки')

Результат

API Яндекс Диск

Теперь при каждом запуске скрипта, наши данные будут загружаться в папку с уникальным именем "дата и время загрузки".

По всем вопросом можете обратиться ко мне через обратную связь, буду рад помочь.

Комментарии

Markdown
Войти

Меню

Объявление

Нашли на сайте баг OR ошибку OR фичу? Прошу Вас сообщить мне через обратную связь, или комментарий.

Есть идеи для сайта? Свяжитесь со мной через форму обратной связи. Наш разработчик всегда рад готов добавить что то новое.