Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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 在IBM云对象存储中立即获取特定存储桶中的所有文件名_Python_Amazon S3_Ibm Cloud_Boto3_Object Storage - Fatal编程技术网

Python 在IBM云对象存储中立即获取特定存储桶中的所有文件名

Python 在IBM云对象存储中立即获取特定存储桶中的所有文件名,python,amazon-s3,ibm-cloud,boto3,object-storage,Python,Amazon S3,Ibm Cloud,Boto3,Object Storage,我将获取特定bucket中的所有文件名,并将其保存在csv中,以便以后可以直接寻址该特定文件,还可以实现多处理以提高下载速度。为了获取文件名,我使用.get()方法,如下所述: def get_项目(bucket_名称,项目名称): 打印(“从存储桶中检索项:{0},键:{1}”。格式(存储桶名称,项名称)) 尝试: file=cos.Object(bucket\u name,item\u name).get() #打印(“文件内容:{0}”。格式(文件[“Body”].read()) 返回(文

我将获取特定bucket中的所有文件名,并将其保存在csv中,以便以后可以直接寻址该特定文件,还可以实现多处理以提高下载速度。为了获取文件名,我使用.get()方法,如下所述:

def get_项目(bucket_名称,项目名称):
打印(“从存储桶中检索项:{0},键:{1}”。格式(存储桶名称,项名称))
尝试:
file=cos.Object(bucket\u name,item\u name).get()
#打印(“文件内容:{0}”。格式(文件[“Body”].read())
返回(文件[“Body”].read())
除以下情况外:
打印(“客户端错误:{0}\n.”格式(be))
例外情况除外,如e:
打印(“无法检索文件内容:{0}”。格式(e))
但问题是我在一个bucket中有超过65000000个文件,所以按顺序获取文件名需要2-3个小时或更长时间

list\u file\u name=[]
对于get_bucket_contents('bucket_name')中的文件:
list\u file\u name.append([file.key,file.size])
#打印(len(列表、文件、名称))
清除输出(等待=真)
显示(len(列表\文件\名称))
df=pd.DataFrame(列表文件名,列=['filename','size'])
project.save_data(“bucket_meta_data.csv”,df.to_csv())
有没有办法更快地获取文件名,或者直接使用某种正则表达式从bucket中寻址这些文件,因为这些文件名具有特定的模式。 例:

1/2)通过直接将文件名作为CSV写入文件,而不是在内存中创建列表,然后在内存中创建数据帧,可以节省大量CPU时间和内存。这些都是昂贵的操作。2/2)您选择了最糟糕的对象存储命名约定。您的文件名都以相同的字符开头,这意味着糟糕的性能。谷歌搜索对象命名或云存储热点。总之,命名约定意味着由于名称哈希冲突,可以处理数据的集群数量减少。有很多关于这个主题的技术论文可供参考。2/2)尽管你在这方面是正确的,但我不能帮助你使用文件命名约定。它已经由其他第三方完成。我只是提取文件来做分析。1/2)你完全正确。我一开始就尝试使用dataframe,但速度非常慢,我不知道为什么。谈到python列表,它们似乎非常快速,能够处理大量数据和内存使用情况,我会在它们的需求完成后立即删除变量。我从来没有遇到过内存不足的问题。速度是我关心的问题。我将调查此事,因为我正在学习这些东西。
temp_DT1875184_t000111.json
temp_DT1875145_t000312.json
temp_DT1434145_t000411.json