Python 3.x 如何使用云功能检查文件落在云存储文件夹中的路径

Python 3.x 如何使用云功能检查文件落在云存储文件夹中的路径,python-3.x,triggers,google-cloud-functions,google-cloud-storage,Python 3.x,Triggers,Google Cloud Functions,Google Cloud Storage,我有一个crontab作业,它将新上传的文件获取到FTP,并将它们存储在云存储桶中的不同文件夹中,如下所示: 如果文件是由user1发送的,那么它将位于bucket/user1/file.csv中 对其他用户也是如此 下一步是,我要处理云函数附带的每个文件,该函数根据新文件的路径对新文件应用更改,并将其保存到另一个存储桶中。 知道云函数只能通过存储桶触发,我想包含一个IF语句,检查新文件是否落在user1文件夹中,然后执行function1elseif user2,然后执行function2,依

我有一个crontab作业,它将新上传的文件获取到FTP,并将它们存储在云存储桶中的不同文件夹中,如下所示: 如果文件是由user1发送的,那么它将位于bucket/user1/file.csv中 对其他用户也是如此

下一步是,我要处理云函数附带的每个文件,该函数根据新文件的路径对新文件应用更改,并将其保存到另一个存储桶中。 知道云函数只能通过存储桶触发,我想包含一个IF语句,检查新文件是否落在user1文件夹中,然后执行function1elseif user2,然后执行function2,依此类推


但是,我直到现在才能够在代码方面解决这个问题。

在云函数中,您可以使用“event”对象,该对象具有“id”属性

此id符合以下要求:

'bucket_name/folder_or_subfolder_name/newly_created_or_updated_object_name/object_generated_id'
因此,如果只剪切最后两个部分,将获得对象所在的路径,还可以隔离对象正上方的文件夹

您还可以根据条件声明其他函数并相应地引用,只需确保在创建云函数时,“要执行的函数”字段中包含“main”函数(在本例中为“hello_gcs”)

下面是一个截取的Python3示例:

def hello_gcs(event, context):
    """Triggered by a change to a Cloud Storage bucket.
    Args:
         event (dict): Event payload.
         context (google.cloud.functions.Context): Metadata for the event.
    """
    word = "dir-name"

    path = event["id"].rsplit("/",2) 
    parent_folder = event["id"].rsplit("/",3) 

    path = path[0]
    parent_folder = parent_folder[1]

    if parent_folder == word:
        one()
    else:
        two()


def one():
    print(f"You have entered function one")


def two():
    print(f"You have entered function two")

您可以根据您的使用情况对其进行更多操作。

非常感谢@mayeru很高兴知道它很有用,我编辑了我的答案,添加了一个如何执行条件的示例,但这是一个通用示例,因为我不确定您使用哪些标准来选择从一个用户到另一个用户的操作。