PyFileSystem2的Amazon S3文件系统
fs-s3fs的Python项目详细描述
s3fs是 亚马逊S3云存储。
作为pyfilesystem的具体类, S3FS允许您工作 与其他受支持的文件系统一样使用s3。
安装
您可以从pip安装s3fs,如下所示:
pip install fs-s3fs
打开S3fs
通过显式使用构造函数打开s3fs:
fromfs_s3fsimportS3FSs3fs=S3FS('mybucket')
或使用fs url:
fromfsimportopen_fss3fs=open_fs('s3://mybucket')
下载文件
要从s3存储桶中下载文件,请在s3文件系统上打开一个文件 读取时,将数据写入本地文件系统上的文件。 下面是一个将文件example.mov从s3复制到hd的示例:
fromfs.toolsimportcopy_file_datawiths3fs.open('example.mov','rb')asremote_file:withopen('example.mov','wb')aslocal_file:copy_file_data(remote_file,local_file)
尽管在 fs.copy模块。下面是一个示例:
fromfs.copyimportcopy_filecopy_file(s3fs,'example.mov','./','example.mov')
上载文件
您可以用同样的方法上载文件。只需从源复制文件 文件系统到s3文件系统。见Moving and Copying 更多信息。
附加参数
除了传统的文件系统之外,s3对象还有其他属性。 可以使用upload_args和^{tt4}设置这些选项$ 财产。它们被用于上传和下载方法,如 适用于文件系统实例的生存期。
例如,要设置上载的所有对象的cache-control头 桶:
importfs,fs.mirrors3fs=S3FS('example',upload_args={"CacheControl":"max-age=2592000","ACL":"public-read"})fs.mirror.mirror('/path/to/mirror',s3fs)
见the Boto3 docs 更多信息。
acl和cache_control为了方便而显式公开, 可以在url中使用。重要的是url转义 cache_controlURL中的值,因为它可能包含特殊字符。
importfs,fs.mirrorwithopenfs.open_fs('s3://example?acl=public-read&cache_control=max-age%3D2592000%2Cpublic')ass3fsfs.mirror.mirror('/path/to/mirror',s3fs)
s3网址
您可以按如下方式获取S3存储桶上文件的公共URL:
movie_url=s3fs.geturl('example.mov')