如何使用Python获取子文件夹中的文件名,而不使用GCS中的路由?
我有一个有很多子文件夹的bucket,我使用这个函数来获取blob,但是我需要获取文件名,这怎么办如何使用Python获取子文件夹中的文件名,而不使用GCS中的路由?,python,google-cloud-functions,google-cloud-storage,Python,Google Cloud Functions,Google Cloud Storage,我有一个有很多子文件夹的bucket,我使用这个函数来获取blob,但是我需要获取文件名,这怎么办 def list_blobs_with_prefix(bucket_name, prefix,delimiter=None): storage_client = storage.Client() blobs = storage_client.list_blobs(bucket_name, prefix=prefix,delimiter=delimiter) return b
def list_blobs_with_prefix(bucket_name, prefix,delimiter=None):
storage_client = storage.Client()
blobs = storage_client.list_blobs(bucket_name, prefix=prefix,delimiter=delimiter)
return blobs
我需要获取不带文件夹路由的文件名,若要在另一个函数中使用它,该函数将尝试下载文件并将其放入临时文件夹。此脚本将为您提供一个列表,其中仅包括存储桶中的文件名,而不包括文件夹/子文件夹/路由
from google.cloud import storage
client = storage.Client()
BUCKET_NAME = 'thehotbucket'
bucket = client.get_bucket(BUCKET_NAME)
blobs = bucket.list_blobs()
for blob in blobs:
try:
num = blob.name.count('/')
string = blob.name.split('/')[num]
if string != "":
print(string)
except:
print("An exception occurred")
你有什么问题?痛点?问题是通过blob.name我可以得到文件夹名和文件名。我只需要获取文件名。@Kolban-我猜是因为这段代码打印的是指定文件夹中的所有对象,而不是对象。第一次编写代码时,
前缀的功能不明显。blob.name将返回子文件夹/文件名。我需要返回文件名,路径类似于bucket/folder/file。现在我想我理解了你的问题。代替建议的打印,请尝试以下操作:Print(blob.name.rindex('/')+1:)
这应该可以,但我不在城市,现在没有pc可以尝试,但请告诉我这是否适合您。这将返回路径的一个字符。:)通过使用blob.name.split(“/”)可以分离文件夹和文件名。