python入门实践六:下载图片并上传七牛云

说明:个人练手python用。
操作系统:window10 x64
IDE:Pycharm 2017.2.2
Python版本:3.6.2

学习目标

1、第三方常见API之七牛云存储的使用
2、python面向对象的使用

一、七牛python SDK的安装

直接安装即可:

cd c:\Programs\Python\Python36\Scripts
pip3.6 install qiniu

[注]关于七牛SDK的安装及使用,详情参见:https://developer.qiniu.com/kodo/sdk/1242/python

二、上传下载类的封装

封装一个类,用于下载和上传,把赋值一次之后不再需要变化的东西作为类的属性,比如上传到七牛的哪个bucket,一次指定即可。把需要变化的东西作为方法的参数,参与到方法的具体逻辑中,比如图片的下载地址,想下载不同的不同肯定需要传入不同的地址。

class UploadDownload:
    def __init__(self, bucket_name, access_key, secret_key):
        self.bucket_name = bucket_name
        self.access_key = access_key
        self.secret_key = secret_key

    # 下载图片
    def download_image(self, url):
        # urlretrieve用于将远程数据下载到本地 time.time()用于获取时间戳
        image_name = str(int(time.time()))
        request.urlretrieve(url, "C:/python_test/" + "%s.jpg" % image_name)
        return "C:/python_test/" + image_name + ".jpg"

    # 上传图片到七牛云存储
    def upload_image(self, save_name, file_path):
        # 构建鉴权对象,需要填写你的 Access Key 和 Secret Key
        q = Auth(self.access_key, self.secret_key)
        # 生成上传 Token,可以指定过期时间等。第一个参数是指上传到哪个bucket,第二个参数值保存到七牛的文件的名称
        token = q.upload_token(self.bucket_name, save_name, 3600)
        # 要上传文件的本地路径。第二个参数是保存到七牛的文件的名称,第三个参数为要上传的文件的完整路径
        put_file(token, save_name, file_path)

这里我们引入了time模块,用于生成时间戳来给下载的图片命名

int(time.time()) # 生成13位的时间戳

三、以面向对象的方式使用

也就是:
1、新建对象
2、使用对象调用方法

def main():
    # 创建UploadDownload对象,包含3个属性
    ud = UploadDownload('reptile', '你的access_key',
                        '你的secret_key')
    # 调用ud对象的下载图片方法
    image_name = ud.download_image('https://cdn.pixabay.com/photo/2015/06/22/08/37/children-817365_960_720.jpg')
    # 对下载的图片上传
    ud.upload_image(image_name.split('/')[-1], image_name)


if __name__ == '__main__':
    main()

这里的if __name__ == '__main__'中的__name__,在本文件直接作为脚本运行时的值为__main__,而当作被别的脚本使用import引用时,则等于别的值。那么就可以通过这句话来判断我们是否是在直接运行本文件。

四、补充

关于import 和 from...import...的理解:

python 相当于Java中的:
import urllib import java.util.Array
from urllib import request import static java.util.Array.sort

五:完整代码

完整代码

你可能感兴趣的:(python入门实践六:下载图片并上传七牛云)