包装gsutil,一个到google云存储的命令行接口。

gsutilwrap的Python项目详细描述


gsutilwrap

gsutilwrap包装google存储gsutil命令行界面,以简化部署和备份 与google云存储相关的任务。它提供一组数据操作命令,包括复制、读取 写入和散列存储的数据。

我们首先需要一些简单的东西,它仍然可以利用多线程,具有良好的进度输出和实现 稳健的模式匹配。由于gsutilcli已经提供了所有这些功能,我们决定将其包装起来。这个 包装器添加带类型注释的参数,并在ide(如pycharm)中提供代码检查和自动完成功能。

另外,由于gsutil缺少将多个模式复制到多个目标的功能,我们创建了这个额外的 功能位于gsutilwrap

如果您需要在应用程序的核心中从/到google云存储传输数据,我们建议您 使用google自己提供的库google-cloud-storage。那家图书馆在 特性,并且不会导致为每个操作授权和生成进程的开销。然而,它 缺少模式匹配(匹配前缀除外),必须管理多线程和进度输出 你自己。

用法

importpathlibimportgsutilwrap# listlst=gsutilwrap.ls('gs://some-bucket/some-path/**/*.txt')lst=gsutilwrap.ls_many(['gs://some-bucket/some-path/**/*.txt','gs://another-bucket/another-path/**/*.xml'],multithreaded=True)# if you need a listing with size and update time, use long_lsentries=gsutilwrap.long_ls('gs://some-bucket/some-path/**/*.txt')forentryinentries:print("File size and update time of {}: {} {}".format(entry.url,entry.size,entry.update_time))# write/read textgsutilwrap.write_text(url='gs://some-bucket/some-path/some-file.txt',text='some text')text=gsutilwrap.read_text(url='gs://some-bucket/some-path/some-file.txt')# write/read bytesgsutilwrap.write_bytes(url='gs://some-bucket/some-path/some-file.bin',data=b'x\DE\xAD\xBE\xEF')data=gsutilwrap.read_bytes(url='gs://some-bucket/some-path/some-file.bin')# copygsutilwrap.copy(pattern="gs://some-bucket/some-path/*.txt",target="/some/dir")gsutilwrap.copy_many_to_one(patterns=["gs://some-bucket/some-path/*.txt","gs://some-bucket/some-path/*.xml"],target="/some/dir")gsutilwrap.copy_many_to_many(patterns_targets=[("gs://some-bucket/some-path/*.txt","/some/dir"),("gs://some-bucket/some-path/*.xml","/some/other/dir")])# stat an objectstat=gsutilwrap.stat(url='gs://some-bucket/some-path/some-file.txt')print("Modification time: {}".format(stat.file_mtime))print("Size: {}".format(stat.content_length))print("MD5: {}".format(stat.md5.hex()))

安装

  • 创建虚拟环境:
python3 -m venv venv3
  • 启动:
source venv3/bin/activate
  • 使用pip:
  • 安装gsutilwrap
pip3 install gsutilwrap

开发

  • 查看存储库。
  • 在存储库根目录中,创建虚拟环境:
python3 -m venv venv3
  • 激活虚拟环境:
source venv3/bin/activate
  • 安装开发依赖项:
pip3 install -e .[dev]
  • 我们提供一套现场测试。现场测试需要在谷歌云存储中存在一个桶。你需要设置 将用于所有实时测试的url前缀via环境变量 TEST_GSUTILWRAP_URL_PREFIX

    请注意,实时测试将使用google云资源,您将为此付费。总是检查没有资源 在测试完成后使用,这样您就不会产生不必要的成本!

  • 我们用毒物测试和包装分发。假设虚拟环境已激活并且 已安装开发依赖项,运行:

tox
  • 我们还提供了一组预提交检查,lint和检查代码的格式。从激活的 具有开发依赖关系的虚拟环境:
./precommit.py
  • 预提交脚本还可以自动格式化代码:
./precommit.py  --overwrite

版本控制

我们跟着Semantic Versioning。版本x.y.z表示:

  • X是主要版本(向后不兼容),
  • y是次要版本(向后兼容),并且
  • z是修补程序版本(向后兼容的错误修复)。

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

推荐PyPI第三方库


热门话题
使用include标记时的java键盘下一步按钮   java如何让Guice管理jar中的类(如果可能的话)?   java springboot eureka客户端错误“无法在任何已知服务器上执行请求”   OutputStream的flush方法什么都不做?   java如何使用不同的类进行播放器输入验证   jtable头中复选框的java事件   java无法从表单操作调用servlet   java为JAXBElement<String>   java我可以只连接一次wifi吗?   datetime无法将字符串解析为Java 8 LocalDateTime   排序计数列表中字符串的出现次数,然后对结果进行排序   在SOAP UI中自动运行请求:如何将值从Java selenium代码传递到autoit代码