与亚马逊的交易

s3utils的Python项目详细描述


#S3实用程序v0.6.0

![Python版本](https://img.shields.io/pypi/pyversions/s3utils.svg?风格=平)
![文档](https://readthedocs.org/projects/s3utils/badge/?版本=最新)
![许可证](https://img.shields.io/pypi/l/s3utils.svg?版本=最新版本)
[![构建状态](https://travis-ci.org/seperman/s3utils.svg?branch=master)(https://travis ci.org/seperman/s3utils)


python中处理amazon s3 bucket和cloud front的用户友好界面。
我写这篇文章是因为s3cmd用于命令行,而其他库似乎不再维护。

s3utils方法就像Linux命令一样,所以很容易记住和使用。

支持3.4和3.5。








*[文档](http://s3utils.readthedocs.org/en/latest/)































/>
;示例安装在安装程序中的安装示例安装在安装在







在您的设置中文件:

``python
>s3utils除错级别=1
aws安全密钥id='你的访问密钥'
aws安全密钥id='你的访问密钥'
aws安全密钥id='你的密钥'
>aws安全存储桶桶桶桶桶桶桶名='你的桶名'
````



```python
>>>gt;从s3utils导入s3utils
>;是的>;s3utils=s3utils()
>>gt;s3utils.cp("路径/到/文件夹","/test/"
复制/path/to/myfolder/test2.txt到test/myfolder/test2.txt
复制/path/to/myfolder/test.txt到test/myfolder/test.txt
复制/path/to/myfolder/hoho/photo.jpg到test/myfolder/hoho/photo.jpg
复制/path/to/myfolder/hoho/haha/ff到test/myfolder/hoho/haha/ff
````

```python
>;>;示例手动设置从s3utils导入s3utils
>;>;s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>>gt;s3utils.cp("路径/到/文件夹","/test/"
复制/path/to/myfolder/test2.txt到test/myfolder/test2.txt
复制/path/to/myfolder/test.txt到test/myfolder/test.txt
复制/path/to/myfolder/hoho/photo.jpg到test/myfolder/hoho/photo.jpg
复制/path/to/myfolder/hoho/haha/ff到test/myfolder/hoho/haha/ff
```

mkdir


>在s3上创建一个文件夹。

``python
>;>;从s3utils导入s3utils
>;>;s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>;>;s3utils.mkdir("path/to/my_folder")
生成目录:path/to/my_folder
````

cp


或者如果您只想复制文件夹的内容,请在S3 bucket上的文件夹名末尾添加/*目标路径:string


acl选项:

-private:owner获得完全控制。其他人没有任何访问权限。
-公共读:所有者获得完全控制,匿名主体被授予读访问权限。
-公共读写:所有者获得完全控制,匿名主体被授予读写访问权限。
-身份验证读:所有者获得完全控制,以及任何作为注册的amazon s3用户进行身份验证的主体在上载后被授予读取权限



在上载后删除本地文件。这实际上就像移动文件一样。
您可以使用s3utils.mv instead of s3utils.cp将文件从本地移动到s3。
它基本上将此标志设置为true。
default=false

overwrite:boolean,可选

默认值为true

invalidate:boolean,可选


如果文件已经存在于s3上,则使cdn(也称为分发)缓存失效
default=false
请注意,失效可能需要15分钟。使用cache buster
在cdn上获取文件的最新版本比使用invalidation更容易、更快。


示例

`` python
>;>从s3utils导入s3utils
>;>s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>>gt;s3utils.cp("路径/到/文件夹","/test/"
复制/path/to/myfolder/test2.txt到test/myfolder/test2.txt
复制/path/to/myfolder/test.txt到test/myfolder/test.txt
复制/path/to/myfolder/hoho/photo.jpg到test/myfolder/hoho/photo.jpg
复制/path/to/myfolder/hoho/haha/ff到test/myfolder/hoho/haha/ff

>>gt;当overwrite设置为false时:
>>gt;s3utils.cp("path/to/folder","/test/",overwrite=false)
test/myfolder/test2.txt已经存在。未覆盖。
test/myfolder/test.txt已存在。未覆盖。
test/myfolder/hoho/photo.jpg已存在。未覆盖。
test/myfolder/hoho/haha/ff已存在。不覆盖。

>>>要覆盖s3上的文件并使cdn(cloudfront)缓存无效,以便新文件在cdn上运行:
>>>要覆盖s3utils.cp("path/to/folder","/test/",overwrite=true,invalidate=true)
复制/path/to/myfolder/test2.txt到test/myfolder/test2.txt
复制/path/to/myfolder/test.txt到test/myfolder/test.txt
复制/path/to/myfolder/hoho/photo.jpg到test/myfolder/hoho/photo.jpg
复制/path/to/myfolder/hoho/haha/ff到test/myfolder/hoho/haha/ff
```



>将文件移动到s3并删除本地副本


>基本上是s3utils.cp在上载后删除=true

>示例
``python
>;>;从s3utils导入s3utils
>;s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>>gt;s3utils.mv("路径/到/文件夹","/test/"
移动/path/to/myfolder/test2.txt到test/myfolder/test2.txt
移动/path/to/myfolder/test.txt到test/myfolder/test.txt
移动/path/to/myfolder/hoho/photo.jpg到test/myfolder/hoho/photo.jpg
移动/path/to/myfolder/hoho/haha/ff到test/myfolder/hoho/haha/ff
```

chmod



设置文件在s3上的权限


参数


target_file:string
s3上的文件路径

s3上的文件权限。默认值为public read

选项:

-private:owner获得完全控制。其他人没有任何访问权限。
-公共读:所有者获得完全控制,匿名主体被授予读访问权限。
-公共读写:所有者获得完全控制,匿名主体被授予读写访问权限。
-身份验证读:所有者获得完全控制,以及任何作为已注册的Amazon S3用户进行身份验证的主体被授予读取权限



示例

`` python
>>>>>来自s3utils import s3utils
>;>s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>>gt;s3utils.chmod("路径/到/文件","私有")。
```



获取s3文件夹中的文件名(键)列表


参数

folder:string
s3上文件的路径

要返回的结果数,默认情况下返回所有结果。

可选的
在s3上从哪个文件开始。
如果您正在遍历文件列表,并且需要通过
从某个文件开始列出并获取特定数量(数量)的文件来分页结果,则可以使用此选项。




examples

``python
>;从s3utils导入s3utils
>;>s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>gt>gt;打印S3utils.ls("test/")
[u'test/myfolder/’,u'test/myfolder/em/’,u'test/myfolder/homho/’,u'test/myfolder/homho/myfolder/hoho/myfolder/homfolder/myfolder/homho/myfolder/hoho/myfolder/hoho/hoho/haha/haha/haha/haha/haha/haha/hoho/myfolder/hoho/haha/haha/haha/haha/haha/haha/haha/hoho/haha/haha/ff',u'test/myfolder/myfolder/hoho/haha/haha/haha/br/>
获取文件列表以及来自s3的权限

您正在对文件列表进行迭代,需要对结果进行分页,方法是从某个文件开始列出列表并获取特定数量的文件。

可选的
将返回更详细的文件权限数据。

aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的bucket名称',
…s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>;>;导入json
>;>;我们使用json.dumps来打印更具可读性的结果:
>;>;my_folder_stuff=s3utils.ll("/test/"
>;>;打印json.dumps(my_folder_stuff,indent=2)
{
"test/myfolder/":[
{"name":"所有者名称",
"权限":"完全控制"
}
],
"测试/myfolder/em/":[
{
"名称":"所有者名称",
"权限":"完全控制"
}
],
"测试/myfolder/hoho/":[
{
"名称":"所有者名称",
"权限":"完全控制"
}
],
"测试/myfolder/hoho/.ds\store":[
{
"名称":"所有者名称",
"权限":"完全控制"
},
{
"名称":空,
"权限":"读取"
}
],
"测试/myfolder/hoho/haha/":[
{
"名称":"所有者名称",
"权限":"完全控制"
}
],
"测试/myfolder/hoho/haha/ff":[
{
"名称":"所有者名称",
"权限":"完全控制"
},
{
"名称":空,
"权限":"读取"
}
],
"测试/myfolder/hoho/photo.jpg":[
{
"名称":"所有者名称",
"权限":"完全控制"
},
{
"名称":空,
"权限":"读取"
}
],
}
````

##使cdn失效

使某个文件的cdn(分发)缓存失效。这可能需要15分钟才能生效。

您可以使用"检查无效"请求检查无效状态。


示例

``python
>;>;从s3utils导入s3utils
>;>;s3utils=s3utils(
…aws_access_key_id='您的访问密钥',
…aws_secret_access_key='您的密钥',
…aws_storage_bucket_name='您的存储桶名称',
s3utils_debug_level=1,将其更改为0以减少详细信息
…)
>;>;aa=s3utils.invalidate("test/myfolder/hoho/photo.jpg")
>;>;打印aa
('your distro id',u'your request id')
>;>;无效宣告请求id=aa[1]
>;>;bb=s3utils.check\u invalidate\'u request(*aa)
>;>;对于bb中的无效宣告:
…打印"对象:%s,ID:%s,状态:%s%(invali,invali.id,invali.status)
``````

\author


seperman(sep ehr)

*[zepworks.com](https://zepworks.com)
*[github](https://github.com/seperman)
*[linkedin](http://www.linkedin.com/in/seperh)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNLP无法在浏览器中正确启动(与dtjava.js一起部署)   在执行下一个方法之前,java将等待线程执行结束   java如何将另一个LayoutManager应用于JComboBox?(多栏JComboBox尝试)   使用jPBC在java中实现双线性配对   java在使用@RequestMapping注释时获取请求的值(URL)   java如何控制流量   java如何获取IFC对象的绝对坐标?   java目标服务器无法使用htmlunit和tor响应异常   java需要帮助创建一个循环结构来运行我的程序   java有可能拥有一个Android APK并在应用程序中更改构建变体吗?   在Sphinx4中运行Ant的java   Java:从ArrayList获取子列表的有效方法   java如何使在循环内部创建的数组在循环外部工作?   apache poi通过java中的XSSF表从单元格读取日期值   安卓 java自己的SeqLock实现,避免spinlock会更好吗?   java的并发底层方法。util。同时发生的预定未来   java比较方法违反了它的一般约定,如何使它具有可传递性?   使用JAVA定向指定类的DB导出子类   一个方法中的java更改特定imageView