前言
考虑到图片放到应用服务器上会导致应用服务器卡顿,所以把图片存储到oss上,但是文件太多就很麻烦了,他仅仅支持批量一百张,单次,而且会很卡顿。
安装OSS2
操作pip3 install oss2 即可
扫描多个目录收集文件
def fileListFunc(filePathList):
fileList = []
for filePath in filePathList:
for top, dirs, nondirs in os.walk(filePath):
for item in nondirs:
fileList.append(os.path.join(top, item))
return fileList
上完整代码
以下代码对文件文件自动依次命名,方便使用。
# -*- coding: utf-8 -*-
import os
import oss2
# 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
# 通过环境变量获取,或者把诸如“<你的AccessKeyId>”替换成真实的AccessKeyId等。
#
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', 'DvJ——————test')
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', 'VI8TF---test')
bucket_name = os.getenv('OSS_TEST_BUCKET', 'bucket_name_test')
endpoint = os.getenv('OSS_TEST_ENDPOINT', 'oss-cn-beijing.aliyuncs.com')
# 确认上面的参数都填写正确了
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
assert '<' not in param, '请设置参数:' + param
# 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
# 上传一段字符串。Object名是motto.txt,内容是一段名言。去根目录下找,或者直接访问就能确认是否上传成功
# bucket.put_object('motto.txt2', 'cont is empty')
def scran_file(path):
file_list = fileListFunc(path)
print(file_list)
n = 500
for file in file_list:
if file.find('.jpg') != -1:
n += 1
print(file)
object_name = '202007_mtp_big_' + str(n) + '.' + file.split('\\')[-1].split('.')[1]
bucket.put_object_from_file(object_name, file)
print(object_name)
else:
print('is other file')
def fileListFunc(filePathList):
fileList = []
for filePath in filePathList:
for top, dirs, nondirs in os.walk(filePath):
for item in nondirs:
fileList.append(os.path.join(top, item))
return fileList
scran_path_list=[r"C:\Users\Baicai\img"]
scran_file(scran_path_list)
只需修改目录即可执行