功能

  • 从腾讯云存储上获取下载链接以及文件大小
  • 将链接及大小更新到csv文件中
  1. # -*- coding=utf-8
  2. from concurrent.futures import ThreadPoolExecutor
  3. from qcloud_cos import CosConfig
  4. from qcloud_cos import CosS3Client
  5. from qcloud_cos.cos_exception import CosClientError, CosServiceError
  6. import logging
  7. import csv
  8. # 找it要腾讯云的账号下的密钥
  9. secret_id = ''
  10. secret_key = ''
  11. bucket = 'mech-soft-1316409819'
  12. # 全球加速域名访问
  13. region = None
  14. token = None
  15. domain = 'mech-soft-1316409819.cos.accelerate.myqcloud.com'
  16. config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Domain=domain)
  17. client = CosS3Client(config)
  18. def get_cos_file_download_url(file_key,original_file_name):
  19. url = client.get_presigned_download_url(
  20. Bucket=bucket,
  21. Key=file_key,
  22. Expired=864000000
  23. )
  24. logging.info("Get cos file download url: key:{0}, original file name:{1}, url:{2}.".format(file_key,original_file_name,url))
  25. return url
  26. def file_size(file_key):
  27. try:
  28. response = client.head_object(Bucket=bucket,Key=file_key)
  29. return int(response["Content-Length"])
  30. except Exception as e:
  31. return 0
  32. def format_file_size(size):
  33. if size < 1024*1024:
  34. return "{}KB".format(str(format(size/1024, '.2f')))
  35. elif size < 1024*1024*1024:
  36. return "{}MB".format(str(format(size/1024/1024, '.2f')))
  37. return "{}GB".format(str(format(size/1024/1024/1024, '.2f')))
  38. if __name__ == '__main__':
  39. links = []
  40. file_path = 'C:/Users/mech-mind-339/Desktop/robots.csv'
  41. with open(file_path) as f:
  42. reader = csv.reader(f)
  43. header_row = next(reader)
  44. for row in reader:
  45. cos_file = "community_downloads/robot_models/{0}/{1}.mrob".format(row[0],row[2])
  46. download_file_name = "{}.mrob".format(row[2])
  47. size = format_file_size(file_size(cos_file))
  48. link = get_cos_file_download_url(cos_file,download_file_name)
  49. print(link)
  50. links.append([link,size])
  51. with open(file_path) as f:
  52. data = [row for row in csv.DictReader(f)]
  53. for i in range(len(links)):
  54. data[i]['链接'] = links[i][0]
  55. data[i]['文件大小'] = links[i][1]
  56. csv_header = data[0].keys()
  57. with open(file_path, 'w', newline='') as f:
  58. writer = csv.DictWriter(f, fieldnames=csv_header)
  59. writer.writeheader()
  60. writer.writerows(data)
文档更新时间: 2023-04-06 08:38   作者:admin