ama*_*ing 6 python google-cloud-functions
我需要将文件保存到 Google Cloud Functions 中的 tmp 文件夹。我正在从 Google Cloud Storage 访问该文件,然后将其发送到 Cloud Functions 来处理该文件。它是 MP4 文件,因此我无法使用纯文本文件可用的任何功能。
我相信我唯一的两个选择是检索文件的二进制文件(我在任何地方都找不到该文件的记录),或者将文件保存到 tmp 文件夹,但此 tmp 文件夹在内存中运行。然而我找不到太多这方面的文档。
我发现的最好的是:Google cloud Functions for Python 中的 tmp 文件,但是由于我没有使用文本文件,所以我无法让它工作。
我不断收到文件或目录不存在的错误。
我的代码如下所示(与Google Cloud Functions for Python 中的 tmp 文件几乎相同)
def function(file):
name = uploadedFile['name']
path_name = get_file_path(name)
def get_file_path(file_name):
return os.path.join(tempfile.gettempdir(), file_name)
Run Code Online (Sandbox Code Playgroud)
我删除了一些特定于文本文件的行。
我不确定是否必须手动启用 tmp/ 文件夹,或者是否有其他方法可以解决此问题,但每当我运行该函数并提供文件时,我都会得到FileNotFoundError: [Errno 2] No such file or directory: '/tmp/filename.mp4'
我假设发生了两件事中的一件,1)在文件完成运行复制(异步运行)之前正在执行下一行代码,或者2我必须做一些事情才能启用并能够写入tmp 文件夹。
谢谢。
首先是从 Google 云存储中以 blob 形式检索文件,然后转换并下载到/tmp. 您将需要google.cloud导入存储,这需要文件中的google-cloud和。google-cloud-storagerequirements.txt
bucket_name = "bucket-name"
source_blob_name = "audio-file.wav"
destination_file_name = "/tmp/audio-file.wav
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
Run Code Online (Sandbox Code Playgroud)
现在您只需要从文件夹中读取即可/tmp。就我而言,它是一个音频文件,所以我使用scipy:
scipy.io.wavfile.read('/tmp/audio-file.wav')
Run Code Online (Sandbox Code Playgroud)
我认为谷歌的文档对此有点误导,因为它实际上根本不需要任何使用os.path。
参考:https://cloud.google.com/functions/docs/concepts/exec#functions-concepts-filesystem-python
如果文件夹结构匹配,您还可以/tmp使用 ZIP 传递静态文件。然而,您不会在控制台的任何地方看到这个 tmp 文件夹,但它确实在那里。
| 归档时间: |
|
| 查看次数: |
3440 次 |
| 最近记录: |