Python TypeError:预期的字符串或字节类对象-如何使用AWS';s文件

Python TypeError:预期的字符串或字节类对象-如何使用AWS';s文件,python,boto3,Python,Boto3,使用文档中提供的代码,我尝试遍历parent_dir,如果有一个zip文件,那么我想将它复制到我的S3 bucket中 我两个都试过了 try: response = s3_client.upload_file(file_name, bucket, object_name) except ClientError as e: logging.error(e) return False return True 及 但他们两人都

使用文档中提供的代码,我尝试遍历parent_dir,如果有一个zip文件,那么我想将它复制到我的S3 bucket中

我两个都试过了

    try:
        response = s3_client.upload_file(file_name, bucket, object_name)
    except ClientError as e:
        logging.error(e)
        return False
    return True

但他们两人都犯了同样的错误

    s3_client = boto3.client(
        's3',
        aws_access_key_id='MY_KEY_ID',
        aws_secret_access_key='MY_ACCESS_KEY'
    )

    session = boto3.Session(
        aws_access_key_id='MY_KEY_ID',
        aws_secret_access_key='MY_ACCESS_KEY',
    )

    s3 = session.resource('s3')
    bucket = s3.Bucket('MY_URL')
TypeError:预期的字符串或类似于object的字节根据,第2个和第3个参数(Bucket和Key)必须是字符串

但您将作为第二个参数传递:

bucket=s3.bucket(“我的URL”)
这是不好的。使其成为普通字符串(更好的是,重命名它):

bucket\u name=“我的URL”

然后将其传递给upload_fileobj,您应该可以解决此问题。

请添加异常stacktrace(它将包含出现的行),并确保该行也在问题中。在最后两个示例中,您传递的是文件句柄,而不是文件路径。第一个例子似乎完全是这样,那么您能提供堆栈跟踪吗?
回溯(最后一次调用):文件“upload3.py”,第180行,在upload\u to\u s3()文件“upload3.py”,第151行,在upload\u to\u s3\u客户端中。upload\u fileobj(f,bucket,object\u name)
这足够好吗?其余部分包含我的个人信息。
    s3_client = boto3.client(
        's3',
        aws_access_key_id='MY_KEY_ID',
        aws_secret_access_key='MY_ACCESS_KEY'
    )

    session = boto3.Session(
        aws_access_key_id='MY_KEY_ID',
        aws_secret_access_key='MY_ACCESS_KEY',
    )

    s3 = session.resource('s3')
    bucket = s3.Bucket('MY_URL')
    for file in os.listdir(parent_dir):
        if object_name is None:
            object_name = file

        if file.endswith('.zip'):
            with open(file, "rb") as f:
                s3_client.upload_fileobj(f, bucket, object_name)