handleossservice.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import shutil
  4. import oss2
  5. # 以下代码展示了基本的文件上传、下载、罗列、删除用法。
  6. # 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
  7. # 通过环境变量获取,或者把诸如“<你的AccessKeyId>”替换成真实的AccessKeyId等。
  8. #
  9. # 以杭州区域为例,Endpoint可以是:
  10. # http://oss-cn-hangzhou.aliyuncs.com
  11. # https://oss-cn-hangzhou.aliyuncs.com
  12. # 分别以HTTP、HTTPS协议访问。
  13. access_key_id = "LTAI4FnJ2pgV6aGceYcCkeEi"
  14. access_key_secret = "ktrMEVE7PfoxRPeJUPDFeygOIH4aU7"
  15. bucket_name = "qmth-test"
  16. endpoint = "oss-cn-shenzhen-internal.aliyuncs.com"
  17. # 确认上面的参数都填写正确了
  18. for param in (access_key_id, access_key_secret, bucket_name, endpoint):
  19. assert '<' not in param, '请设置参数:' + param
  20. # 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
  21. bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
  22. # # 上传一段字符串。Object名是motto.txt,内容是一段名言。
  23. # bucket.put_object('motto.txt', 'Never give up. - Jack Ma')
  24. #
  25. # # 获取Object的metadata
  26. # object_meta = bucket.get_object_meta('你的对象名')
  27. # print('last modified: ' + object_meta.last_modified)
  28. # print('etag: ' + object_meta.etag)
  29. # print('size: ' + object_meta.content_length)
  30. #
  31. # # 下载到本地文件
  32. # bucket.get_object_to_file('motto.txt', '本地文件名.txt')
  33. #
  34. #
  35. # # 把刚刚上传的Object下载到本地文件 “座右铭.txt” 中
  36. # # 因为get_object()方法返回的是一个file-like object,所以我们可以直接用shutil.copyfileobj()做拷贝
  37. # with open(oss2.to_unicode('本地座右铭.txt'), 'wb') as f:
  38. # shutil.copyfileobj(bucket.get_object('motto.txt'), f)
  39. # 把本地文件 “座右铭.txt” 上传到OSS,新的Object叫做 “我的座右铭.txt”
  40. # 注意到,这次put_object()的第二个参数是file object;而上次上传是一个字符串。
  41. # put_object()能够识别不同的参数类型
  42. with open(oss2.to_unicode(r'D:\output\764\A149-A\11524915.json'), 'rb') as f:
  43. bucket.put_object('云上座右铭.txt', f)
  44. # 上面两行代码,也可以用下面的一行代码来实现
  45. bucket.put_object_from_file('test.json', r'D:\output\764\A149-A\11524915.json')
  46. # 列举Bucket下10个Object,并打印它们的最后修改时间、文件名
  47. for i, object_info in enumerate(oss2.ObjectIterator(bucket)):
  48. print("{0} {1}".format(object_info.last_modified, object_info.key))
  49. if i >= 9:
  50. break
  51. # # 删除名为motto.txt的Object
  52. # bucket.delete_object('motto.txt')
  53. #
  54. # # 也可以批量删除
  55. # # 注意:重复删除motto.txt,并不会报错
  56. # bucket.batch_delete_objects(['motto.txt', '云上座右铭.txt'])
  57. #
  58. #
  59. # # 确认Object已经被删除了
  60. # assert not bucket.object_exists('motto.txt')
  61. #
  62. #
  63. # # 获取不存在的文件会抛出oss2.exceptions.NoSuchKey异常
  64. # try:
  65. # bucket.get_object('云上座右铭.txt')
  66. # except oss2.exceptions.NoSuchKey as e:
  67. # print(u'已经被删除了:request_id={0}'.format(e.request_id))
  68. # else:
  69. # assert False
  70. # 清除本地文件
  71. # os.remove(u'本地文件名.txt')
  72. # os.remove(u'本地座右铭.txt')