pbj0812의 코딩 일기

[PYTHON] python을 사용한 Google Drive 에 파일 업로드 본문

ComputerLanguage_Program/PYTHON

[PYTHON] python을 사용한 Google Drive 에 파일 업로드

pbj0812 2020. 2. 13. 00:25

0. 목표

 - 원하는 파일을 구글 드라이브 특정 폴더에 업로드

 

1. 준비

 1) 샘플 파일 준비

  - hellow.txt 라는 이름으로 된 파일 준비

 2) google api 설정

  (1) 링크 접속

  (2) 계속

  (3) 사용자 인증 정보로 이동

  (4) 호출 위치 선택 이후 '어떤 사용자 정보가 필요한가요?' 클릭

   (5) 동의 화면 설정

   (6) 외부 -> 만들기

    - 내부는 G-suite 사용자만 사용가능

  (7) 어플리케이션 이름 설정 후 계속 확인

  (8) 사용자 인증 정보 -> 사용자 인증 정보 만들기

  (9) OAuth 클라이언트 ID 클릭

  (10) 기타 -> 생성

  (11) OAuth 클라이언트 ID 맨 오른쪽 다운로드

 3) 실험 폴더 준비

   (1) 원하는 이름으로 지정

   (2) 폴더 ID 확인

    - 위 파란 줄 친 부분이 폴더 ID

2. 코드 작성

 - python 사용(jupyter notebook 이용시 에러 발생)

 - 참고 코드 수정(폴더 지정부분 삽입)하여 작성

 - 실행시 수정 필요 부분
  1) 인증 정보 : 1 2) (11) 결과로 얻은 json 경로

  2) 업로드 대상 파일 : 1의 1)의 hellow.txt 경로

  3) 폴더 아이디 : 1 3) (2)의 폴더 ID

  4) 업로드 이후 파일명 : 구글 드라이브에 2)를 올렸을 때의 파일 명

from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

try :
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('storage.json')
creds = store.get()

if not creds or creds.invalid:
    print("make new storage data file ")
    flow = client.flow_from_clientsecrets('인증 정보', SCOPES)
    creds = tools.run_flow(flow, store, flags) if flags else tools.run(flow, store)

DRIVE = build('drive', 'v3', http=creds.authorize(Http()))

FILES = (
    ('업로드 대상 파일'),
)

folder_id = '폴더 아이디'

for file_title in FILES :
    file_name = file_title
    metadata = {'name': '업로드 이후 파일명',
                'parents' : [folder_id],
                'mimeType': None
                }

    res = DRIVE.files().create(body=metadata, media_body=file_name).execute()
    if res:
        print('Uploaded "%s" (%s)' % (file_name, res['mimeType']))

3. 실행 결과

 - 처음에 권한 필요하다는 화면이 발생하며 확인을 눌러준다. -> 위의 storage.json 파일 생성(주의)

 - storage.json 파일 생성 이후 실행 하였을 시에는 권한 설정 문구가 뜨지 않음.

4. 참고

 1) 참고 코드

 2) 참고 코드2 

 3) 구글 드라이브 API 호출

 4) 구글 드라이브 폴더 생성 

Comments