Rusfatal

Untitled

Jan 19th, 2022 (edited)
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.92 KB | None | 0 0
  1. # полезные ссылки
  2. # Google Colab: import data from google drive as pandas dataframe: https://www.javacodemonk.com/google-colab-import-data-from-google-drive-as-pandas-dataframe-079a3609
  3. # Работаем с API Google Drive с помощью Python: http://datalytics.ru/all/rabotaem-s-api-google-drive-s-pomoschyu-python/
  4. # Introduction to Google Drive API: https://developers.google.com/drive/api/v3/about-sdk
  5. # google-auth user guide: https://google-auth.readthedocs.io/en/master/user-guide.html
  6. # PyDrive’s documentation: https://pythonhosted.org/PyDrive/
  7. # Introduction to Google Drive API: https://developers.google.com/drive/api/v3/about-sdk
  8.  
  9. # импортируем пандас для работы с таблицами
  10. import pandas as pd
  11. # импортируем модуль GoogleAuth из библиотеки pydrive для прохождения аутентификации в гуглклауд нашего сервисного приложения
  12. from pydrive.auth import GoogleAuth
  13. # импоритруем модуль GoogleDrive из библиотеки pydrive для работы с диском
  14. from pydrive.drive import GoogleDrive
  15. # импортируем ServiceAccountCredentials для работы с авторизацией в гуглклауд
  16. from oauth2client.service_account import ServiceAccountCredentials
  17.  
  18. # создаем объект GoogleAuth
  19. gauth = GoogleAuth()
  20.  
  21. # Scope — это перечень возможностей, которыми будет обладать сервис, созданный в скрипте .
  22. # В данном случае указанный scope позволит смотреть, редактировать, создавать и удалять файлы с диска
  23. scope = ["https://www.googleapis.com/auth/drive"]
  24.  
  25. # авторизуемся в гуглклауд с помощью  json файла с ключами авторизации для сервисного приложения
  26. # , а также заданного выше Scope
  27. # вместо r"C:\gd_to_pq.json" указать свой путь к файлу к ключами для сервисного приложения
  28. gauth.credentials = ServiceAccountCredentials.from_json_keyfile_name(r"C:\gd_to_pq.json", scope)  
  29.  
  30. # создаем объект GoogleDrive
  31. drive = GoogleDrive(gauth)
  32.  
  33. # Создаем объект GoogleDriveFile с нужным нам file_id с помощью метода CreateFile у объекта GoogleDrive.
  34. file_id = '1B0kqT23cKwocuBVXiw_20cN6l'  # здесь указать id своего файла в гугл диске
  35. file = drive.CreateFile({'id': file_id})
  36. #  теперь , когда мы получили в переменной file объект GoogleDriveFile с нужным нам файлом ,можно получить содержание этого файла с помощью метода GetContentFile
  37. # и сразу назвать этот файл test.xlsx
  38. file.GetContentFile('test.xlsx')
  39.  
  40. # создаем объект файла эксель в пандасе
  41. xlsx_file = pd.ExcelFile('test.xlsx')
  42. # получаем списко листов
  43. ws = xlsx_file.sheet_names
  44. # создаем объединенный датафрейм из всех листов
  45. df1 = pd.concat(pd.read_excel('test.xlsx', sheet_name=ws))
  46. # или создаем отдельный датафрейм для каждого листа
  47. df2 = pd.read_excel('test.xlsx', sheet_name=0)
  48.  
  49.  
  50. ###########################  Этот блок кода можно не копироватьв Power BI  (начало)##############
  51. # если хотим посмотреть id title и  mimetype всех доступных нашему приложению файлов и папок то запускаем этот блок кода. Его можно не копировать в PowerBI
  52. all_files_and_folders_List = drive.ListFile({}).GetList() # получили список всех файлов и папок доступных нашему приложению в гуглдрайве
  53. keys = ['id', 'title', 'mimeType']  # определили списко атрибутов файлов и папок , которые мы хотим вывести на печать
  54. for i in all_files_and_folders_List:  # в цикле берем каждый файл/папку
  55.     for key in keys:  # для каждого файла/папки извлекаем название атрибута и значение
  56.         print(f'{key} = {i.attr["metadata"].get(key)} , ', end='')
  57.     print()
  58.  
  59. # если хотим получить список файлов внутри папки  (этот блок кода также можно не копировать в Power BI), к которой у нашего приложения есть доступ используем метод ListFile у объекта drive
  60. # параметры запроса q указанные внутри ListFile можно посмотреть тут: https://developers.google.com/drive/api/v3/search-files
  61. folder_id = '1J5RaiambhevWheG2uYTisFMkf'  # указываем google id папки которую хотим посмотреть и которая доступна для нашего приложения
  62. gg = f"'{folder_id}' in parents and trashed=false"  # пишем параметр запроса с указанием id нашей папки
  63. file_list = drive.ListFile({'q': gg}).GetList()  # здесь получаем список файлов/папок внутри нашей головной папки с айдишником folder_id
  64. # в цикле выводим title и id каждого файла/папки внутри нашей главной папки
  65. for f in file_list:
  66.   print('title: %s, id: %s' % (f['title'], f['id']))
  67. ###########################  Этот блок кода можно не копироватьв Power BI  (конец)##############
  68.  
  69.  
Add Comment
Please, Sign In to add comment