amazon s3 学习 python

amazon s3 全称为 亚马逊简易存储服务(Amazon Simple Storage Service) 简单的说就是个网上存文件的服务器,可以把自己文件放上去,然后通过它开放的api来进行管理。官方网站是http://aws.amazon.com/cn/s3/

在s3上面有一个bucket,我的理解就是模块化,因为那个东西很大,如果我要存在音乐文件和安装包,和在一起放的话会很乱,就用bucket来分一下模块。这样后台也可以更好的管理。对于开发者也可以只开放对于的模块,安全性也得到提高。还有一点就是s3上每个文件都有一个key,这个key如果从后台来看的话就是文件的文件名。如果设置了对外开放的话,全球用户都可以根据这个key去访问这个文件

最近学习的就是用python写一个上传文件到s3的功能

上传的话主要包括 (1)检测文件是否存在;(2)上传文件

判断key是否存在的代码 其中BUCKET_NAME 就是上面提到的 bucket的名字。然后还有两个东西是 AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY 这两个东西是s3的唯一认证,在注册好之后会得到这两个东西,python中直接写到java里面就可以。如果是在java中的话会是一个文件credentials,把这两个东西写进去,然后把这个文件放到windows用户目录下的.aws文件夹下才可以用。我们觉得不方便所以就没有用java来写。

def is_s3_file_exist(key):
    ‘‘‘
     weather s3 exists this key
     return True exist
    ‘‘‘
    bucket_name = BUCKET_NAME
    # connect to the bucket
    conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
                    AWS_SECRET_ACCESS_KEY)
    bucket = conn.get_bucket(bucket_name)

    # create a key to keep track of our file in the storage
    k = Key(bucket)
    k.key = key

    if k.exists(None):
        logging.info("s3 exists this file")
        return True
    else:
        return False

上传部分的代码,前面和上一个函数都差不多,上传也就只有一行 k.set_contents_from_filename(filepath),然后有一个k.make_public()这个的话就是前面所说的让所有人都可以访问这个文件,但是后台得配置一下权限。

def upload_apk_to_s3(key,filepath):
    ‘‘‘
    upload apk to s3
    ‘‘‘
    try:
        bucket_name = BUCKET_NAME
        # connect to the bucket
        conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
                        AWS_SECRET_ACCESS_KEY)
        bucket = conn.get_bucket(bucket_name)

        # create a key to keep track of our file in the storage
        k = Key(bucket)
        k.key = key

        k.set_contents_from_filename(filepath)
        # we need to make it public so it can be accessed publicly
        # using a URL like http://s3.amazonaws.com/bucket_name/key
        k.make_public()
        logging.info("upload file to s3 success")

        return True

    except Exception,e:
        logging.info("upload_apk_to_s3 error")
        logging.info(e)
        return False


在代码中有一个logging.info(""),这个是linux常用的打印日志的方法,因为在linux中这些代码都是后台运行的。如果靠print来输出日志的话,我们是看不到的,这个东西非常好用一次配置之后整个工程都可以用

import  logging

logging.basicConfig(filename=‘/var/log/xx/xx.log‘,
                    filemode=‘a‘,
                    format=‘%(asctime)s %(name)s %(levelname)s %(message)s‘,
                    datefmt=‘%Y-%m-%d %H:%M:%S‘,
                    level=logging.DEBUG)

以后只需要调用logging.info("")就可以了,然后利用命令

 tail -f /var/log/xx/xx.log

就可以查看最新的log文件了,还有一点值得注意的是,这些目录得先创建好,日志文件它会自己创建,但是目录不会。

时间: 2024-10-06 21:52:27

amazon s3 学习 python的相关文章

CloudFusion,支持Dropbox, Sugarsync, Amazon S3, Google Storage, Google Drive or WebDAV

Linux file system (FUSE) to access Dropbox, Sugarsync, Amazon S3, Google Storage, Google Drive or WebDAV servers. http://joe42.github.com/CloudFusion/https://github.com/joe42/CloudFusion -------------------------------------------------Fuse也是一个办法: A

学习Python随想

进入大三之后进入了一周基本都是专业课的状态,虽然相比之前几个学期课时量减少了,但实际上学要学习的任务却大大增加了,而类似于Python,spss这一类的课程是之前之前并没有听说过的,但在上过两周之后发现,Python是类似于c语言一类的课程,而之前的c语言和数据结构学得并不好,所以其实在内心深处是有一丝丝的惧怕的,希望在实践课上能多做一些类似于第一次的学打代码的联系,多找找感觉. 课堂进度十分之快,时而跟得上时而跟不上,而一旦跟不上就会跟多米诺骨牌似的,影响接下来的课堂学习.在智慧云教室最大的感

【个人计划】告别英雄联盟,开始学习Python

不知不觉中接触英雄联盟已经快两年了,记得是大四那年找完工作,一下比较清闲,宿舍刚好有lol的氛围,于是乎,四个新手在何大神的带领下,走上了lol的道路.不得不说,从那以后,花费在lol上的时间太多啦,据我估计,个人玩了将近2000了吧,别看局数这么多,其实就是个渣渣,技术太菜了,这也就是我告别英雄联盟的原因啦,根本没有玩这个游戏的天赋,技术上没有一点点提高,一直就是在浪费时间罢了. 就我个人而言,1.在补兵方面,时好时坏,而且有时候性子急,不太注重前期的补兵发育,往往导致输的结局:2.游戏中大部

学习python第一天

学习Python第一天 Python小白,做Linux运维5年,纯系统运维已经不能满足日常工作需要,所以学习Linux运维开发入门级语言python 前言: Python, 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议. Python语法简洁清晰,特色之一是强制用空白符(white

重新学习python系列(一)? WTF?

重新学习python:两年前学了点python之后就一直没做做过啥项目, 基本上全忘光了,复习一下搞点事情 or |and & ord() ascii转16进制 chr()  16进制转ascii >>> u'ABC'.encode('utf-8') 'ABC' >>> u'中文'.encode('utf-8') '\xe4\xb8\xad\xe6\x96\x87' >>> 'abc'.decode('utf-8') u'abc' >&g

Python学习--Python基础语法

第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下: Window上在安装Python时已经已经安装了默认的交互式编程客户端,提示窗口如下: 在Python提示符中输入一下文本,然后按回车查看运行结果: print 'hello world'; 输出: hello world 脚本式编程 让我们来写一个简单的Python脚本,所有的Pytho

几条学习python的建议

熟悉python语言, 以及学会python的编码方式. 熟悉python库, 遇到开发任务的时候知道如何去找对应的模块. 知道如何查找和获取第三方的python库, 以应付开发任务. 学习步骤 安装开发环境 如果你在window下, 去下载pythonxy安装起来, 然后运行python, 进入python解释环境. 如果你在ubuntu下, 执行: sudo apt-get install python, 然后在命令行下运行python, 进入python解释环境. 学习方法 作为一名成熟的

鱼C《零基础入门学习Python》10-17节课时知识点总结

第10讲:列表:一个打了激素的数组 1. 列表都可以存放一些什么东西?  我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. 2. 向列表增加元素有哪些方法?  三种方法想列表增加元素,分别是:append().extend() 和 insert().    3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?  append() 方法是将

学习python的小随笔

Python在课表中的名字是高级语言程序设计.上了两周的专业课,我想说我真的是想来学教育的,现在成了计算机了.我还想说,有没有一种可以用中文写程序的软件,有志向的大佬们赶紧弄个吧!       其实关于学习Python倒是不反感,无论是当初学习c++,还是现在学Python,都感觉这个东西挺有意思的.当你能把一个程序写出来并且运转成功之后,那种成就感是难以形容的.(哪怕是对着书敲上的)       希望老师教学中.把我们当做一个程序小白,很多老师以为学过了就精通了,可是事实不是那样.个人感觉Py