[Python GoogleDrive] Google Driveからログファイルを ダウンロード/展開/削除 する
これはなに?
以下のnoteでアップロードしたログファイルをローカルに落としたり、展開したりするだけのスクリプト
確認環境
Mac で動作確認
※websocket-clientは0.49以降だとうまく受信できないかもしれないので注意
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: 18A391
$ python --version
Python 3.6.2 :: Anaconda, Inc.
$ pip --version
pypip 18.0
$ pip show websocket-client PyDrive google-api-python-client
Name: websocket-client
Version: 0.48.0
Name: PyDrive
Version: 1.3.1
Name: google-api-python-client
Version: 1.7.4
コード
適当です
# -*- Coding: utf-8 -*-
import pathlib
import zipfile
from zipfile import ZIP_DEFLATED, ZIP_BZIP2, ZIP_LZMA
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
# Google Drive からファイルを削除するか
TRASH_GDRIVE_FILE = False
DELETE_GDRIVE_FILE = False
# 圧縮ファイルの展開有無
UNCOMPRESS_FILE = True
# 展開後に圧縮ファイルを削除するか
DELETE_ZIPPED_FILE = True
GDRIVE_FOLDER_ID = 'GoogleDriveFolderId'
DOWNLOAD_FOLDER = "download"
BYTE_UNITS = ["[B]", "[KB]", "[MB]", "[GB]"]
def readableSize(size):
for i, unit in enumerate(BYTE_UNITS):
div = size / pow(1024, i)
if div < 1024:
return f"{round(div, 3)}{unit}"
def downloadAndDecompress():
dlPath = pathlib.Path(f"{DOWNLOAD_FOLDER}")
gauth = GoogleAuth()
gauth.CommandLineAuth()
drive = GoogleDrive(gauth)
fileList = drive.ListFile({'q': f'\"{GDRIVE_FOLDER_ID}\" in parents and trashed=false'}).GetList()
for f in fileList:
fName, fSize = f["title"], int(f["fileSize"])
# 同じ basename のファイル(展開済, pkl, etc)が既にある場合スキップ
if len(list(dlPath.glob(f"{fName[:-4]}*"))):
print(f"Skip {fName}")
continue
# ダウンロード
dlFile = dlPath / pathlib.Path(fName)
print(f"Download {fName} to {dlFile}, {readableSize(fSize)}")
f.GetContentFile(dlFile)
# ゴミ箱に移動(Google Drive)
if TRASH_GDRIVE_FILE:
print(f"Trash {fName}")
f.Trash()
# 完全削除(Google Drive)
if DELETE_GDRIVE_FILE:
print(f"Delete {fName}")
f.Delete()
# 解凍
if UNCOMPRESS_FILE:
print(f"Extract {dlFile}")
with zipfile.ZipFile(dlFile) as zippedFile:
zippedFile.extractall(dlPath)
# 削除(LocalFile)
if DELETE_ZIPPED_FILE:
print(f"Delete {dlFile}")
dlFile.unlink()
if __name__ == "__main__":
downloadAndDecompress()
動作について
この辺を好きに設定してください。TRASHはゴミ箱への移動、DELETEは完全削除
# Google Drive からファイルを削除するか
TRASH_GDRIVE_FILE = False
DELETE_GDRIVE_FILE = False
# 圧縮ファイルの展開有無
UNCOMPRESS_FILE = True
# 展開後に圧縮ファイルを削除するか
DELETE_ZIPPED_FILE = True
GDRIVE_FOLDER_ID = 'GoogleDriveFolderId'
DOWNLOAD_FOLDER = "download"
参考サイト
↓と同じなので省略
おわりに
有料(¥100)にしてるけど、これで内容は全部です。募金してくれる人がいれば、ジュース代としていただけると嬉しい。コードは、インデントくずれが起きたりするようなので、コピペ時には注意してください。
マガジン
コメント用note(未購入者向け)
干し芋
ここから先は
0字
¥ 100
期間限定!Amazon Payで支払うと抽選で
Amazonギフトカード5,000円分が当たる
Amazonギフトカード5,000円分が当たる
サポート頂けると励みになります BTC,BCH: 39kcicufyycWVf8gcGxgsFn2B8Nd7reNUA LTC: LUFGHgdx1qqashDw4WxDcSYQPzd9w9f3iL MONA: MJXExiB7T7FFXKYf9SLqykrtGYDFn3gnaM