簡體   English   中英

如何使用 Python 為 Google Cloud Storage Bucket 應用正則表達式

[英]How to apply regex for Google Cloud Storage Bucket using Python

我正在使用 python 從 Google Cloud Storage 中獲取對象,文件夾中有很多文件(大約 20000 個)。

但我只需要一個特定的文件,即 .json 文件,所有其他文件都是 csv 格式。 現在我使用以下帶有前綴選項的代碼:

from google.cloud import storage
import json
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)

blobs = list(bucket.list_blobs(prefix="input"))

for blob in blobs:
    if '.json' in blob.name:
        filename = blob.name
        break

這個過程不穩定,因為文件數量會增加,並且需要很多時間來過濾 json 文件。 (文件名是動態的,可以是任何東西)

在從雲存儲中獲取數據時,是否有任何可以像正則表達式過濾器一樣使用的選項?

如果您想根據正則表達式檢查文件名/擴展名,這很容易。

只需在開頭導入“re”模塊

import re

並檢查循環內的正則表達式:

for blob in blobs:
    if re.match(r'\.json$',blob.name):
        filename = blob.name
        break

您可以在 regex101.com 上開發正則表達式,然后再將其刻錄到您的代碼上。

順便說一句 - 我更喜歡用 str.endswith 檢查擴展,它非常快:

for blob in blobs:
    if blob.name.endswith('.json'):
        filename = blob.name
        break

我不會用

if '.json' in filename:
   etc...

因為它可能匹配任何其他文件名,如“compressed.json.gz”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM