python - 创建类时,我得到 TypeError: missing 1 required position argument
问题描述
我正在尝试将 csv 文件上传到 s3。当我尝试围绕方法创建一个类时,我得到一个Type Error: upload_file_to_s3bucket() missing 1 required positional argument: 'file_path'
. 它可以在没有课程的情况下成功运行。
class S3Upload():
def __init__(self, filename=TEST_FILE, filetype='.csv'):
self.filename = filename
self.type = filetype
def make_bucket(self, name, acl):
session = aws_session()
s3_resource = session.resource('s3')
return s3_resource.create_bucket(Bucket=name, ACL=acl)
def upload_file_to_s3bucket(self, bucket_name, file_path):
session = aws_session()
s3_resource = session.resource('s3')
file_dir, file_name = os.path.split(file_path)
bucket = s3_resource.Bucket(bucket_name)
bucket.upload_file(
Filename=file_path,
Key=file_name,
ExtraArgs={'ACL': 'public-read'}
)
s3_url = f"https://{bucket_name}.s3.amazonaws.com/{file_name}"
return s3_url
s3_url = upload_file_to_s3bucket('mitch-demo', TEST_FILE)
print(s3_url) # https://mitch-demo.s3.amazonaws.com/simple.csv
if __name__ == '__main__':
S3 = S3Upload(TEST_FILE)
S3.make_bucket()
S3.upload_file_to_s3bucket()
解决方案
在这一行
s3_url = upload_file_to_s3bucket('mitch-demo', TEST_FILE)
您传入方法中定义的存储桶名称和文件路径的两个参数
def upload_file_to_s3bucket(self, bucket_name, file_path):
但是在您以后的代码中,您没有这样做,这就是它出错的原因。它实际上发生了两次......您需要在我发表评论的地方传递值:
S3.make_bucket(#you need to add a name and acl arguments)
S3.upload_file_to_s3bucket(# you need to add bucket name and file path arguments)
推荐阅读
- javascript - 使用计时器触发的 Azure javascript 函数检索不记名访问令牌时出现问题
- python - 一个热门编码器的 categorical_features 用于什么?
- django - 如何在html模板中使用for循环
- electron - 在 Electronjs 中使用 Javascript Webspeech Api
- xml - 如果元素具有具有特定 id 的附加属性,则更改属性的值
- bixby - 上次 6.10.0-r19i.8185 BixbyStudio 之后的变化
- git - git:如何只允许访问某些文件夹(不是所有 repo)?回购在 Windows 服务器上
- python - 如何在 Django 模板中显示模型功能
- email - Bot Framework 电子邮件通道响应时间慢
- google-drive-api - 如何在特定团队驱动器或文件夹中创建文件?