python 分片

使用分片操作来访问一定范围内的元素 。分片通过冒号隔开的两个索引来实现。

>>> suibian='1234566'
>>> suibian[0:5]
'12345'

第一个索引的元素是包含在分片内的,而第二个则不包含再分片内。

为了能让分片部分能够包含列表的最后一个 元素,必须提供最后一个的下一个元素所对应的索引作为边界。

如果需要复制整个序列只需要将两个索引都置空

>>> suibian='1234566'
>>> suibian[:]
'123456789'

2,更大的步长

进行分片的时候,分片的开始和结束点需要进行指定,而另外一个参数----步长-----通常是隐式设置的。默认为1

>>> suibian[0:5:1]
'12345'
>>> suibian[0:5:2]
'135'

倒序输出  另步长为-1

>>> suibian[::-1]
'987654321'

 

### Python 分片上传视频实现方法 分片上传是一种将大型文件分割成较小部分并分别上传的技术,这有助于提高大文件传输的可靠性和效率[^2]。 对于Python中的具体实现,通常会借助第三方库的帮助。以阿里云的对象存储服务OSS为例,下面展示了一个简单的分片上传流程: #### 初始化配置与创建Bucket实例 ```python import oss2 access_key_id = 'your-access-key-id' access_key_secret = 'your-access-key-secret' bucket_name = 'your-bucket-name' endpoint = 'oss-cn-hangzhou.aliyuncs.com' auth = oss2.Auth(access_key_id, access_key_secret) bucket = oss2.Bucket(auth, endpoint, bucket_name) ``` #### 开始多部分上传获取Upload ID ```python object_name = "example_video.mp4" upload_id = bucket.init_multipart_upload(object_name).upload_id print(f'Initiated multipart upload with id {upload_id}') ``` #### 计算每个分片大小以及总数量 ```python file_path = '/path/to/large/video/file.mp4' part_size = 10 * 1024 * 1024 # 每个分片设为10MB total_size = os.path.getsize(file_path) parts_count = (total_size + part_size - 1) // part_size print(f'Total parts count will be {parts_count}') ``` #### 执行实际的数据分片读取和上传过程 ```python from tqdm import tqdm with open(file_path, 'rb') as fileobj: results = [] for i in range(parts_count): offset = i * part_size num_to_read = min(part_size, total_size - offset) data = fileobj.read(num_to_read) result = bucket.upload_part( object_name, upload_id, i + 1, # Part number starts from 1 not zero. data ) etag = result.etag size = len(data) results.append(oss2.models.PartInfo(i + 1, etag=etag, size=size)) print(f'Uploaded part #{i+1}, ETag={etag}') # Complete the multi-part upload after all parts have been uploaded successfully. complete_result = bucket.complete_multipart_upload(object_name, upload_id, results) print('Multipart upload completed.') ``` 如果中途出现问题想要终止当前正在进行中的分片上传,则可以通过调用`bucket.abort_multipart_upload()`函数来完成这一操作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值