Upload file to google drive using api with python

파이썬과 google drive api를 이용하여 구글 드라이브에 파일을 업로드해 보도록 하겠습니다.

api를 사용하기 위해 권한을 받아야 합습니다.

https://console.developers.google.com/flows/enableapi?apiid=drive

위 링크에 접속합니다.

Create a project를 선택한 후 Continue를 클릭합니다.

Google Drive Api를 사용할 수 있게 되었습니다.

Go to credentials를 클릭합니다.

Cancel을 눌러 빠져나옵니다.

OAuth consent screen을 클릭합니다.

Email을 확인하고 Product name을 적어줍니다.

save를 눌러 저장해 줍니다.

Credentials로 돌아와 Create credentials - OAuth client ID를 클릭합니다.

Other를 선택하고 Create를 클릭합니다.

나오는 결과창은 OK를 눌러 닫은 뒤 다운로드 마크를 눌러 Json파일을 다운받습니다.

다운받은 json파일은 client_secret_~~~~~~~~~~.json 으로 되어있을 것입니다.

이를 client_secret_drive.json 로 바꿔줍니다.

작업할 폴더를 만들고(저는 F:\python\drive_api) 안에 json파일을 넣어줍니다.

위와 같은 폴더에 python 스크립트를 만듭니다.

저는 upload_file.py로 하였습니다.

스크립트 작성 전에 pip를 이용하여 패키지를 설치해 줍니다.

pip install --upgrade google-api-python-client

스크립트 작성 전 폴더안에 hello.txt라는 파일을 만들어 줍니다.

안의 내용은 아무거나 넣어도 상관없습니다.

python 코드는 아래와 같습니다.

upload_file.py

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('client_secret_drive.json', SCOPES)
    creds = tools.run_flow(flow, store, flags) \
            if flags else tools.run(flow, store)

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

FILES = (
    ('hello.txt'),
)

for file_title in FILES :
    file_name = file_title
    metadata = {'name': file_name,
                'mimeType': None
                }

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

실행시키면 다음과 같은 창이 뜰 것입니다.

여러 아이디가 로그인 되어있다면 로그인 할 아이디를 선택해 줍니다.

허용을 눌러줍니다.

api 사용을 위한 준비가 완료되었습니다.

폴더안에 storage.json이라는 파일이 생성됩니다.

이 파일은 token값등 구글 계정의 권한을 일부 가지고 있으므로 외부 공개를 주의해 주시기 바랍니다.

업로드가 완료되면 위와 같이 출력될 것입니다.

구글드라이브에 들어가보면 위와같이 업로드가 완료된 것을 볼 수 있습니다.

이상 python에서 google drive api 사용하여 파일 업로드하기 입니다.