存儲工具:阿里雲->對象存儲
WIN10,Python 3.7.4,PyCharm
需要將數據從雲端下載到本地后再進行后續分析處理。
手動下載
需要下載的文件不多時,可以用這個方式。
依次點擊:阿里雲->控制台->對象存儲->Bucket列表->XX Bucket->文件管理
該界面下,選中數據文件后,點擊 批量操作->下載
腳本下載(Python)
按照阿里雲的SDK文檔(有各種語言的版本,這里選的是Python),可以很快地編寫下載腳本:
用到下載文件、列舉文件、刪除文件這3個功能。
下載文件
以下代碼用於將指定的OSS文件下載到本地文件:
# -*- coding: utf-8 -*- import oss2 # 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州為例,其它Region請按實際情況填寫。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # <yourObjectName>從OSS下載文件時需要指定包含文件后綴在內的完整路徑,例如abc/efg/123.jpg。 # <yourLocalFile>由本地文件路徑加文件名包括后綴組成,例如/users/local/myfile.txt。 bucket.get_object_to_file('<yourObjectName>', '<yourLocalFile>')
列舉文件
以下代碼用於列舉指定存儲空間下的10個文件:
# -*- coding: utf-8 -*- import oss2 from itertools import islice # 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州為例,其它Region請按實際情況填寫。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # oss2.ObjectIteratorr用於遍歷文件。 for b in islice(oss2.ObjectIterator(bucket), 10): print(b.key)
刪除文件
以下代碼用於刪除指定文件:
# -*- coding: utf-8 -*- import oss2 # 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。 auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>') # Endpoint以杭州為例,其它Region請按實際情況填寫。 bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # <yourObjectName>表示刪除OSS文件時需要指定包含文件后綴在內的完整路徑,例如abc/efg/123.jpg。 bucket.delete_object('<yourObjectName>')
根據上述代碼,編寫數據下載腳本如下(保存為 oss_download.py):
1 import oss2 2 import os 3 from itertools import islice 4 5 local_dir = 'E://data//' 6 access_key = '<yourAccessKeyId>' 7 secret_key = '<yourAccessKeySecret>' 8 9 try: 10 # 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。 11 # 強烈建議您創建並使用RAM賬號進行API訪問或日常運維, 12 # 請登錄 https://ram.console.aliyun.com 創建RAM賬號。 13 auth = oss2.Auth(access_key, secret_key) 14 # Endpoint以北京為例,其它Region請按實際情況填寫。 15 bucket = oss2.Bucket(auth, 'oss-cn-beijing.aliyuncs.com', '<yourBucketName>') 16 17 for obj in oss2.ObjectIterator(bucket): 18 print(obj.key) 19 filepath = local_dir + obj.key 20 if os.path.exists(filepath): 21 print ('已存在:' + filepath) 22 # delete data 23 print('刪除雲端數據:' + obj.key) 24 bucket.delete_object(obj.key) 25 else: 26 filedir = os.path.dirname(filepath) 27 if not os.path.exists(filedir): 28 os.makedirs(filedir) 29 print('目錄創建成功:' + filedir) 30 bucket.get_object_to_file(obj.key, filepath) 31 except: 32 print('wrong')
程序中指定了本地的存儲目錄為’E://data//’,使用’//’來表示目錄不容易出錯。
列舉出指定Bucket中的各個文件名,如果該文件在Bucket的一個二級目錄下,文件名中也會包含文件夾信息,用print(obj.key) 打印出來:
FT_M003/FT_M003_00002019_2020-04-02_070821.db3
根據obj.key得到存儲到本地的文件名 filepath = local_dir + obj.key
如果本地存在這個文件,就把雲端Bucket中文件給刪掉,否則就下載到本地(如果本地不存在目錄,就創建目錄)。當然也可以選擇不刪或者下載完成后馬上就刪,這個隨意。
下載雲端文件到本地(本地文件名:filepath)
bucket.get_object_to_file(obj.key, filepath)
刪除雲端文件
bucket.delete_object(obj.key)
<yourAccessKeyId>,<yourAccessKeySecret>
可以在AccessKey管理中創建,創建完成后會生成AccessKey和AccessKeySecret,並保存在一個csv文件中,通過這個鑰匙可以獲得阿里雲所有API的訪問權限,一定要好好保管。
<yourBucketName> 是之前創建的Bucket名稱。
數據管理軟件
在上述腳本的基礎上,可以做一個數據管理軟件,加入UI界面,還有這些功能:
同步:讀取雲端的所有文件名,更新到本地;
下載:下載全部文件、部分文件;
刪除:刪除全部文件、部分文件
這個軟件做起來很靈活,實現起來應該也不難,這里不展開說了。