python - Python:在放置请求中合并文件路径
问题描述
我正在开发一个使用请求库并与 Autodesk Forge REST API 通信的项目。在这个项目的一部分中,我必须将文件上传到服务器。我正在使用下面的代码:
url = 'https://developer.api.autodesk.com/oss/v2/buckets/' + BUCKET_NAME + '/objects/' + FILE_NAME
headers = {
'Content-Type' : 'application/octet-stream',
'Authorization' : 'Bearer ' + ACCESS_TOKEN,
}
with open(FILE_NAME, 'rb') as f:
r = requests.put(url, headers=headers, data=f)
其中 BUCKET_NAME 是存储桶的名称,FILE_NAME 是我要上传的文件的名称。如果我要上传的文件与 python 脚本位于同一目录中,则此代码可以正常工作。但是,有什么方法可以为文件提供 PATH 吗?(例如,当 FILE_NAME 为 /dir1/dir2/dir3/filename.jpg 时,如何使此代码工作)?
解决方案
您可以使用os.path.join创建路径并分配给FILE_NAME
,请注意,这仅适用于 linux 系统,因为我们有/
路径分隔符
import os
folders = ['dir1','dir2','dir3']
FILE_NAME = os.path.join(*folders, 'filename.jpg')
print(FILE_NAME)
对于更通用的方法,我们可以简单地使用/
分隔符连接各个目录和文件名
names = ['dir1','dir2','dir3', 'filename.jpg']
FILE_NAME = '/'.join(names)
print(FILE_NAME)
两种情况下的输出都是
dir1/dir2/dir3/filename.jpg
推荐阅读
- image - 提高图像的分辨率
- jquery-select2 - 当我使用 select2 创建动态下拉列表时,它会中断
- android - 当应用程序在 Android 和 iOS 上离开屏幕时执行代码
- cucumber - Cucumber 'Postground' 标签用于组合功能文件中所有场景的相同步骤
- ruby - 需要在perl中创建一个孤儿进程
- c# - Azure 存储 SDK - 检查 Blob 是否是分层存储中的目录
- python - 正则表达式提取所有以相同单词开头和结尾的句子
- java - 如何使用 exec 在 Kotlin 中运行 APT 命令?
- java - Hibernate 映射 - 元素类型“class”的内容必须匹配“(meta*,subselect
- amazon-web-services - 无法在启用默认 AWS KMS 加密的情况下从 S3 存储桶写入或读取