我正在努力弄清楚如何在google云存储中的blob中迭代对象。其地址与此类似:
gs://project_ID/bucket_name/DIRECTORY/file1
gs://project_ID/bucket_name/DIRECTORY/file2
gs://project_ID/bucket_name/DIRECTORY/file3
gs://project_ID/bucket_name/DIRECTORY/file4
...GCS桶上的目录有很多不同的文件需要迭代,这样我就可以检查它最后一次更新的时间(看看它是否是新的文件),这样我就可以提取内容了。
示例函数
def getNewFiles():
storage_client = storage.Client(project='project_ID')
try:
bucket = storage_client.get_bucket('bucket_name')
except:
storage_client.create_bucket(bucket_name)
for blob in bucket.list_blobs(prefix='DIRECTORY'):
if blob.name == 'DIRECTORY/':
**Iterate through this Directory**
**CODE NEEDED HERE***
**Figure out how to iterate through all files here**我已经看过python和客户端库,找不到这种工作的任何例子。
发布于 2018-02-19 15:51:17
根据for Python文档,blob.name
这与桶中对象的唯一路径相对应。
因此,blob.name将返回如下内容:
DIRECTORY/file1如果在使用list_blobs() 方法时已经包含了参数方法,则可以通过以下操作获取目录中的所有文件:
for blob in bucket.list_blobs(prefix='DIRECTORY'):
print(blob.name)您可以使用类似blob.name.lstrip('DIRECTORY')或标准库re模块之类的方法来清理字符串并只获取文件名。
但是,根据您所说的:“这样我就可以检查它最后一次更新的时间(查看它是否是一个新文件)”,如果您正在寻找在桶中有新文件时触发的某个函数,则可以使用Google云功能。您已经了解了在创建新对象时如何将它们与云存储一起使用的这里的医生。尽管截至当前日期(2月/2018年),您只能使用NODE.JS编写云函数
https://stackoverflow.com/questions/48716820
复制相似问题