python google drive api_Python管理Google Drive文件

背景

Google Drive給我們提供了很多管理和共享文件的簡便方法,而且還是免費的(當然免費賬戶有一定存儲限制)。但是,對于某些edu用戶,Google Drive存儲不僅是免費的,而且是無配額限制的。您是否想知道如何從數據科學的角度充分利用這種免費的云存儲服務? 實際上,這并不困難,我們可以使用Python輕松實現訪問和管理Google Drive文件。

設置Google Service API認證

首先,我們需要獲取Google Service API的身份驗證文件,以便我們的Python代碼可以訪問Google Drive。 為此,我們需要:

在Google Developer Console 頁面建立一個新項目(如下圖所示)

你可以給這個項目一個名字,也可以設為默認值。

點擊”ENABLE APIS AND SERVICES”開通API服務(如下圖所示).

然后頁面會轉到下面的截圖。

在上面的搜索框內搜索”Google Drive”,我們會得到如下界面。

點擊”Google Drive API”,進入下一個界面。

點擊”ENABLE”開通Google Drive API服務,進入下一個界面。

點擊”CREATE CREDENTIALS”創建密碼信息。

在上面的截圖中點擊”client ID”,然后在下一個界面中點擊”CREATE”,并下載創建成功的JSON密碼文件如下。

下載的JSON文件就是Python程序讀寫Google Drive所需要的Google Serivces認證文件。

安裝使用PyDrive

下面我們就可以通過在終端運行pip install pydrive安裝PyDrive庫,并使用PyDrive庫管理和讀寫Google Drive文件。

下面的代碼將完成Google Drive用戶認證,并列出Google Drive根目錄下的所有文件。需要說明的是,我們需要把上面步驟中下載的JSON文件另存為client_serets.json文件,并把它放到Python程序所在的存儲文件下。

from pydrive.auth import GoogleAuth

from pydrive.drive import GoogleDrive

# Rename the downloaded JSON file to client_secrets.json

# The client_secrets.json file needs to be in the same directory as the script.

gauth = GoogleAuth()

drive = GoogleDrive(gauth)

# List files in Google Drive

fileList = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()

for file1 in file_list:

print('title: %s, id: %s' % (file1['title'], file1['id']))

每次運行上面的代碼,程序都會自動打開一個瀏覽器頁面讓用戶填寫Google用戶名和密碼。為了避免每次都填寫用戶名和密碼,我們可以創建一個settings.yaml文件,如下所示完成相關設置。settings.yaml文件的具體信息可參見PyDrive官方文檔。

client_config_backend: settings

client_config:

client_id: your_client_id

client_secret: your_client_secret

save_credentials: True

save_credentials_backend: file

save_credentials_file: credentials.json

get_refresh_token: True

oauth_scope:

- https://www.googleapis.com/auth/drive.file

其中, client_id和client_secret可以通過下面所示的截圖獲得。

重新運行上面的Python代碼,程序將要求您再次輸入Google密碼。 然后它將創建一個credientials.json文件。 再次運行時,Python會自動提取該文件中的內容完成身份驗證,這樣我們就不需要再次輸入密碼了。

利用下面的代碼,我們就可以把本地文件上傳到Google Drive指定的文件夾里。

# Upload files to your Google Drive

upload_file_list = ['google_console1.png', 'google_console2.png']

for upload_file in upload_file_list:

gfile = drive.CreateFile({'parents': [{'id': '1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t'}]})

# Read file and set it as a content of this instance.

gfile.SetContentFile(upload_file)

gfile.Upload() # Upload the file.

上面的代碼將兩個本地文件google_console1.png和google_console2.png上傳到我的Google Drive文件夾test/中。 為此,PyDrive庫將在Google Drive中創建兩個文件,然后讀取并將本地的兩個文件上傳到相應的文件中。 此處,我們需要提供相應Google Drive文件夾的id。 在此示例中,test文件夾的ID為1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。 小竅門:我們可以從瀏覽器中獲取Google Drive文件夾ID。 例如,當我在Google Drive中打開test文件夾時,瀏覽器將地址顯示為https://drive.google.com/drive/folders/1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。test文件夾的相應ID是瀏覽器地址欄中最后一個符號后的部分,即1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t。

同樣,我們也可以使用以下代碼直接將文件寫入Google Drive:

file1 = drive.CreateFile({

'parents': [{'id': '1pzschX3uMbxU0lB5WZ6IlEEeAUE8MZ-t'}],

'title': 'Hello.txt'}) # Create GoogleDriveFile instance with title 'Hello.txt'.

file1.SetContentString('Hello World!') # Set content of the file from given string.

file1.Upload()

我們也可以用下面的代碼直接讀取Google Drive里的文件。

file2 = drive.CreateFile({'id': file1['id']})

file2.GetContentString('Hello.txt')

總結

通過這篇文章,我們學習了如何使用PyDrive直接管理Google Drive中的文件(包括讀寫和創建)。 主要步驟如下:

設置Google DriveAPI并創建認證文件

安裝PyDrive并完成身份驗證

使用Python管理Google Drive文件(比如上傳和讀寫)

更多PyDrive的使用和文件管理功能請參見PyDrive官方網站。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396532.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396532.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396532.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Struts2學習---基本配置,action,動態方法調用,action接收參數

首先我們先來直接配置,然后再來講原理: 第一步:jar包的引入: 我們可以到struts2的官網上下載: http://struts.apache.org/download.cgi#struts2513 然后解壓將里面的app文件夾下的示例war文件解壓,將里面的…

實現對數組找最大最小數

實現對數組找最大最小數 在用js的過程中我們往往會需要找到一個數組里最大或最小的數, 但是我們不能直接用Math.max(Arr)或Math.min(Arr),因為max()里面不能填數組,只能填連續的數。 那我們該怎么辦呢? 一定…

開源免費 低代碼平臺開源_行動透明:免費代碼營現已開源

開源免費 低代碼平臺開源by freeCodeCamp通過freeCodeCamp 行動透明:免費代碼營現已開源 (Transparency in Action: Free Code Camp is Now Open Source) We’re thrilled to announce that Free Code Camp is now fully open-source. Now you can fork our code b…

vc mysql init 崩潰_故障分析 | 崩潰恢復巨慢原因分析

作者:xuty本文來源:原創投稿*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。一、現象有個 MySQL 5.7 開發庫異常掛掉后,奔潰恢復一直處于如下位置,且持續了 2 小時左右才起來…

surfaceview結束后怎么處理_污泥壓濾機處理后的污泥怎么處置

在污泥處理處置中,污泥壓濾機處理污泥只是對污泥進行脫水,并沒有實現污泥資源化處置。再進行污泥“減量化、無害化、資源化”處理時,許多企業用污泥壓濾機對污泥脫水處理后就不知道怎么繼續處置了,從而使污泥餅無處可去&#xff0…

js數組詳解

1,什么是數組數組是值得有序集合,每個值叫做一個元素,而每個元素在數組中有一個位置,以數字表示,稱為索引。js的數組是無類型的,數組元素可以是任意類型,同一個數組中的不同元素可能是對象或數組…

[轉載]linux內存映射mmap原理分析

轉自:http://blog.csdn.net/yusiguyuan/article/details/23388771 內存映射,簡而言之就是將用戶空間的一段內存區域映射到內核空間,映射成功后,用戶對這段內存區域的修改可以直接反映到內核空間,同樣,內核空…

判斷一個指針有沒有free_Free Code Camp的每個人現在都有一個檔案袋

判斷一個指針有沒有freeby freeCodeCamp通過freeCodeCamp Free Code Camp的每個人現在都有一個檔案袋 (Everyone at Free Code Camp now has a Portfolio) Note: we originally published this on our now-defunct blog in January of 2015.注意:我們最初是在2015年…

冒泡、快速排序小結

1.冒泡排序 (1) 比較領近的兩個數 (2) 如果左邊的比右邊的數字大,則交換位置 (3) 向右移動一位,繼續比較相鄰的兩個數 排序示例: 一輪排序結束后,最大值的位置已經移動最右端,再次如此循環,最終經過n-1次則…

python中until函數_等待應用程序窗口:python中的pywinauto.timings.WaitUntilPasses

我試圖在pywinauto中使用waituntilpasses來給應用程序時間打開一個新窗口.我已使用SWAPY識別窗口詳細信息.為了進行測試,我手動打開了子窗口,因此WaitUntilPasses應該立即看到該窗口,但是沒有看到.語法顯示為OK,因為我可以找到并打印find_windows的輸出,如下所示:xx…

synchronized 異常_由淺入深,Java 并發編程中的 Synchronized

synchronized 作用synchronized 關鍵字是 Java 并發編程中線程同步的常用手段之一。1.1 作用:確保線程互斥的訪問同步代,鎖自動釋放,多個線程操作同個代碼塊或函數必須排隊獲得鎖,保證共享變量的修改能夠及時可見,獲得…

mysql正則通配符全解_mysql正則表達式與通配符

擴展正則表達式的一些字符是: “.”匹配任何單個的字符。 一個字符類“[...]”匹配在方括號內的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。為了命名字符的一個范圍,使用一個“-”。“[a-z]”匹配任何小寫字母,而“[0-9…

dos常用文件操作命令

1、DIR 含義: 顯示指定目錄下的文件和子目錄列表 類型: 內部命令 格式: DIR[drive:][path][filename][/p][/w][/A[[:]attributes]][/O[[:]sortorder]][/S][/B][/L] 舉例: DIR DIR D:\px2 DIR D:\px2\*.txt DIR /A:D /O:D 2、COPY…

使您的Java代碼聞起來很新鮮

by Marco Massenzio由Marco Massenzio 使您的Java代碼聞起來很新鮮 (Make your Java code smell nice and fresh) A few years ago I joined a startup working on a cloud enterprise service that was originally built by an offshore team.幾年前,我加入了一家…

MySQL時間戳與日期格式的相互轉換

MySQL時間戳與日期格式的相互轉換,PHP時間戳與日期格式的相互轉換 MySQL: 獲取當前時間SELECT NOW(); // 2018/10/11 14:22:51 時間日期格式轉換成時間戳格式,UNIX_TIMESTAMP()SELECT UNIX_TIMESTAMP(NOW()); // 1539238930 時間戳格式轉換成時間日期格式…

Linux內存分配機制之伙伴系統和SLAB

轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6539590.html 內核內存管理的一項重要工作就是如何在頻繁申請釋放內存的情況下,避免碎片的產生。這就要求內核采取靈活而恰當的內存分配策略。通常,內存分配一般有兩種情況&#xff1a…

this.$modal.confirm 自定義按鈕關閉_自定義函數,讓你玩轉Excel得心應手

讓“自動更正”輸入統一的文本,你是不是經常為輸入某些固定的文本,如《電腦報》而煩惱呢?那就往下看吧。1.執行“工具→自動更正”命令,打開“自動更正”對話框。2.在“替換”下面的方框中輸入“pcw”(也可以是其他字符,“pcw”用小寫),在“替換為”下面的方框中輸…

php mysql 排名算法_MySQL PHP:優化排名查詢和計數子查詢

這是原始數據,并希望根據得分(count(tbl_1.id))對它們進行排名.[tbl_1]id | name1 | peter2 | jane1 | peter2 | jane3 | harry3 | harry3 | harry3 | harry4 | ron因此,制作臨時表(tbl_2)來計算每個id的分數.SELECT id, name, COUNT( id ) AS scoreFROM tbl_1GROUP BY idORDER…

CCF-CSP 最大的矩形

問題描述在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i(1 ≤ i ≤ n)個矩形的高度是hi。這n個矩形構成了一個直方圖。例如,下圖中六個矩形的高度就分別是3, 1, 6, 5, 2, 3。請找出能放在給定直方圖里面積最大的矩…

Stack Overflow 2016年對50,000名開發人員進行的調查得出的見解

Today, Stack Overflow released the results of their 2016 survey of more than 50,000 developers.今天,Stack Overflow發布了他們2016年對50,000多名開發人員進行的調查的結果。 I’ve combed through this big document to bring you the most surprising ins…