An internal utility package for Aliyun OSS operations.
Project description
ALI OSS Upload/Download Package
阿里云 OSS 文件上传下载工具包,支持同步和异步操作,提供文件上传、批量上传、目录上传以及文件下载功能。
功能特点
- 支持单个文件上传和下载
- 支持批量文件上传和下载
- 支持目录上传
- 支持同步和异步操作
- 提供上传/下载进度显示
- 完善的错误处理机制
安装
pip install oss-internal
使用方法
1. 文件上传
单个文件上传
from oss_internal import upload_file_to_oss
# 同步上传
file_path = upload_file_to_oss(
file_path="path/to/local/file.txt",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket",
default_prefix="your/prefix" # 可选
)
# 异步上传
from oss_internal import aupload_file_to_oss
import asyncio
async def upload():
file_path = await aupload_file_to_oss(
file_path="path/to/local/file.txt",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket"
)
asyncio.run(upload())
批量文件上传
from oss_internal import batch_upload_file_to_oss
# 同步批量上传
file_paths = [
"path/to/file1.txt",
"path/to/file2.txt",
"path/to/file3.txt"
]
oss_keys, bucket_name = batch_upload_file_to_oss(
file_paths=file_paths,
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket"
)
# 异步批量上传
from oss_internal import abatch_upload_file_to_oss
async def batch_upload():
oss_keys, bucket_name = await abatch_upload_file_to_oss(
file_paths=file_paths,
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket"
)
asyncio.run(batch_upload())
目录上传
from oss_internal import upload_directory_to_oss
# 同步目录上传
oss_keys, bucket_name = upload_directory_to_oss(
directory_path="path/to/directory",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket"
)
# 异步目录上传
from oss_internal import aupload_directory_to_oss
async def upload_dir():
oss_keys, bucket_name = await aupload_directory_to_oss(
directory_path="path/to/directory",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket"
)
asyncio.run(upload_dir())
2. 文件下载
单个文件下载
from oss_internal import download_single_file_from_oss
try:
file_path = download_single_file_from_oss(
oss_key="path/to/oss/file.txt",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket",
temp_dir="/path/to/save" # 可选,指定下载目录
)
print(f"文件下载成功: {file_path}")
except FileNotFoundError as e:
print(f"文件不存在: {e}")
except Exception as e:
print(f"下载失败: {e}")
批量文件下载
from oss_internal import download_batch_files_from_oss
try:
file_paths = download_batch_files_from_oss(
oss_keys=[
"path/to/file1.txt",
"path/to/file2.txt",
"path/to/file3.txt"
],
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket",
temp_dir="/path/to/save" # 可选,指定下载目录
)
print(f"所有文件下载成功: {file_paths}")
except FileNotFoundError as e:
print(f"没有文件下载成功: {e}")
except FileNotEnoughError as e:
print(f"部分文件下载成功: {e}")
except Exception as e:
print(f"下载失败: {e}")
3. 进度显示
from oss_internal import show_upload_progress, show_download_progress
# 上传时显示进度
upload_file_to_oss(
file_path="path/to/file.txt",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket",
progress_callback=show_upload_progress
)
# 下载时显示进度
download_single_file_from_oss(
oss_key="path/to/oss/file.txt",
ali_access_key_id="your_key",
ali_access_secret="your_secret",
oss_origin="oss-cn-hangzhou",
bucket_name="your-bucket",
progress_callback=show_download_progress
)
参数说明
通用参数
ali_access_key_id: 阿里云 AccessKey IDali_access_secret: 阿里云 AccessKey Secretoss_origin: OSS 服务的地域节点,例如 'oss-cn-hangzhou'bucket_name: OSS Bucket 的名称internal: 是否使用内网访问,默认为 Trueprogress_callback: 进度回调函数,默认为 None
上传特有参数
file_path: 本地文件路径default_prefix: 默认的 OSS 对象前缀路径prefix: 自定义的 OSS 对象前缀路径
下载特有参数
oss_key: OSS 文件 keytemp_dir: 临时目录路径,如果不指定则使用系统临时目录
错误处理
包中定义了以下自定义异常:
FileNotFoundError: 文件不存在时抛出FileNotEnoughError: 批量下载时部分文件下载成功时抛出EmptyDirectoryError: 目录为空时抛出NotADirectoryError: 指定路径不是目录时抛出
依赖要求
- Python >= 3.11
- aiohappyeyeballs
- aiohttp
- aiosignal
- aliyun-python-sdk-core
- aliyun-python-sdk-kms
- asyncio-oss
- attrs
- certifi
- cffi
- charset-normalizer
- crcmod
- cryptography
- frozenlist
- idna
- jmespath
- multidict
- oss2
- propcache
- pycparser
- pycryptodome
- requests
- six
- tqdm
- urllib3
- yarl
许可证
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
oss_internal-1.6.0.tar.gz
(13.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oss_internal-1.6.0.tar.gz.
File metadata
- Download URL: oss_internal-1.6.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f301b25d8841393900cbcbf491f38bc8d4fb681831904ec37128835b84c1276f
|
|
| MD5 |
8365b3a80a851fef67fcab0b7b93cb35
|
|
| BLAKE2b-256 |
8ee7a7da48857427a057668af5b2e94125ee15176801a9a6cedebed2c918575e
|
File details
Details for the file oss_internal-1.6.0-py3-none-any.whl.
File metadata
- Download URL: oss_internal-1.6.0-py3-none-any.whl
- Upload date:
- Size: 12.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81d0a12e093012da436fca5fa0e81d6471a7290247528bc2c9ad6a7447f906de
|
|
| MD5 |
55dcc8a3723bc7696c31ae729cc394d2
|
|
| BLAKE2b-256 |
815160175655ad1721a0aa86c16aff4368b9ba375903d9ec0eccb68ec335cebe
|