Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python-从特定文件夹/子文件夹AWSS3下载数据_Python 3.x_Amazon Web Services_Amazon S3_Boto3 - Fatal编程技术网

Python 3.x Python-从特定文件夹/子文件夹AWSS3下载数据

Python 3.x Python-从特定文件夹/子文件夹AWSS3下载数据,python-3.x,amazon-web-services,amazon-s3,boto3,Python 3.x,Amazon Web Services,Amazon S3,Boto3,我试图从AWS S3中提取数据。下面的代码帮助我下载一个文件。但是,如果bucket有多个文件夹,那么下面的代码将尝试提取完整的bucket,而不是特定的文件夹/子文件夹。如何修改下面的代码以仅提取文件夹/子文件夹中的特定文件 from boto3.session import Session import boto3 ACCESS_KEY = 'ABC' SECRET_KEY = 'XYZ' session = Session(aws_access_key_id=ACCESS_KEY,

我试图从AWS S3中提取数据。下面的代码帮助我下载一个文件。但是,如果bucket有多个文件夹,那么下面的代码将尝试提取完整的bucket,而不是特定的文件夹/子文件夹。如何修改下面的代码以仅提取文件夹/子文件夹中的特定文件

from boto3.session import Session
import boto3

ACCESS_KEY = 'ABC'
SECRET_KEY = 'XYZ'

session = Session(aws_access_key_id=ACCESS_KEY,
          aws_secret_access_key=SECRET_KEY)
s3 = session.resource('s3')
your_bucket = s3.Bucket('bucket_name')

for s3_file in your_bucket.objects.all():
    print(s3_file.key)

your_bucket.download_file('rawdata.xlsx' ,/Users/user/Desktop/folder/')

谢谢。

要下载特定文件,您应该创建要下载的文件列表。然后,您可以检查文件是否匹配,然后下载它

files_to_downloaded = ["folder1/key.png", "folder2/other.png", "folderRandom/Randomkey.png"]
for fileObject in bucket.objects.all():
    file_name = str(fileObject.key)
    if file_name in files_to_downloaded:
        bucket.download_file(file_name, 'destination_path')

要下载特定文件,应创建要下载的文件列表。然后,您可以检查文件是否匹配,然后下载它

files_to_downloaded = ["folder1/key.png", "folder2/other.png", "folderRandom/Randomkey.png"]
for fileObject in bucket.objects.all():
    file_name = str(fileObject.key)
    if file_name in files_to_downloaded:
        bucket.download_file(file_name, 'destination_path')

您希望“仅在文件夹/子文件夹中的特定文件”,还是希望代码复制该目录和子目录中的所有文件?您还希望它在本地重新创建文件夹层次结构吗?@JohnRotenstein,是的,我正在尝试将特定文件夹的内容复制到本地文件夹。Source有多个文件夹,我仅尝试从几个特定文件夹下载,并希望在脚本中定义位置。请注意,如果您正在将文件下载到本地计算机,并且希望重新创建文件夹层次结构,您的代码还必须在将文件下载到这些目录之前创建目录。一些示例是关于可能重复的,您是希望“仅在文件夹/子文件夹中的特定文件”,还是希望代码复制该目录和子目录中的所有文件?您还希望它在本地重新创建文件夹层次结构吗?@JohnRotenstein,是的,我正在尝试将特定文件夹的内容复制到本地文件夹。Source有多个文件夹,我仅尝试从几个特定文件夹下载,并希望在脚本中定义位置。请注意,如果您正在将文件下载到本地计算机,并且希望重新创建文件夹层次结构,您的代码还必须在将文件下载到这些目录之前创建目录。一些例子是关于Hi@bughunter的,我已经更新了上面提到的代码,但是我得到了以下错误AttributeError:“str”对象没有属性“objects”代码:your_bucket=s3.bucket('bucketname')#对于您的_bucket.objects中的s3_文件。all():#print(s3_file.key)files_to_下载=[“main/sub/file1.txt”,“main/sub1/file2.txt”]对于bucket.objects.all()中的fileObject:@Taukheer,您可以随意编辑您的问题,而不是将代码放在注释中。@Taukheer,您可以更新您尝试过的问题吗。在注释中阅读代码真的很困难。@BugHunter,我能够提取预期的输出。谢谢。@Taukheer,太好了:)如果你觉得这个答案有帮助,那么请接受它。嗨@bughunter,我已经更新了上面提到的代码,但是我得到了下面的错误AttributeError:'str'对象没有属性'objects'代码:你的_bucket=s3.bucket('bucketname')#用于你的_bucket.objects中的s3_文件。all():#print(s3_file.key)bucket.objects.all()中fileObject的文件\-to \-u下载=[“main/sub/file1.txt”,“main/sub1/file2.txt”]:@Taukheer无需在注释中添加代码,请随意编辑您的问题。@Taukheer,请更新问题,您已经尝试过的内容。在注释中阅读代码真的很困难。@BugHunter,我能够提取预期的输出。谢谢。@Taukheer,太好了:)如果你觉得这个答案有帮助,请接受它。