用python写一个本地自动上传阿里云盘的代码
时间: 2024-05-02 14:16:09 浏览: 10
首先,你需要安装阿里云Python SDK,可以通过以下命令安装:
```
pip install aliyun-python-sdk-core
pip install aliyun-python-sdk-sts
pip install aliyun-python-sdk-oss
```
接着,你需要在阿里云控制台中创建一个AccessKey,用于访问阿里云API。
然后,你可以先编写一个简单的Python脚本,用于上传文件到阿里云OSS:
```python
import os
import datetime
import oss2
# 阿里云AccessKey信息
access_key_id = '<your-access-key-id>'
access_key_secret = '<your-access-key-secret>'
# 阿里云OSS存储桶信息
endpoint = '<your-oss-endpoint>'
bucket_name = '<your-bucket-name>'
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
# 本地文件路径
local_file_path = '<your-local-file-path>'
# 上传到OSS的文件名
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
file_name = timestamp + '_' + os.path.basename(local_file_path)
# 上传文件
bucket.put_object_from_file(file_name, local_file_path)
```
以上代码通过阿里云Python SDK创建了一个OSS Bucket对象,并使用put_object_from_file方法将本地文件上传到阿里云OSS中。
如果你想实现自动化上传,你可以使用Python的watchdog库,监控指定目录中文件的变化,并在文件变化后调用上述代码进行上传。以下是一个简单的watchdog实现示例:
```python
import os
import datetime
import time
import watchdog.events
import watchdog.observers
import oss2
# 阿里云AccessKey信息
access_key_id = '<your-access-key-id>'
access_key_secret = '<your-access-key-secret>'
# 阿里云OSS存储桶信息
endpoint = '<your-oss-endpoint>'
bucket_name = '<your-bucket-name>'
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)
# 本地监控目录
watch_path = '<your-watch-path>'
class FileEventHandler(watchdog.events.FileSystemEventHandler):
def on_created(self, event):
if event.is_directory:
return
local_file_path = event.src_path
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
file_name = timestamp + '_' + os.path.basename(local_file_path)
bucket.put_object_from_file(file_name, local_file_path)
if __name__ == "__main__":
event_handler = FileEventHandler()
observer = watchdog.observers.Observer()
observer.schedule(event_handler, watch_path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
```
以上代码使用watchdog库监控指定目录中的文件变化,在文件被创建时调用上述上传代码进行上传。