簡體   English   中英

使用 Pandas 讀取和寫入 csv 和其他文件格式到 Google Cloud Storage

[英]Read and Write csv and other file formats to Google Cloud Storage with Pandas

def get_config_files(self):
       dict_path = 'word.pkl'
       self.kw_ns = ConfigParser()
       self.kw_ns.add_section('Paths')
       self.kw_ns.set('Paths','new_df1','gs://'+filepath, encoding='utf-8')
       self.kw_ns.set('Paths','dictionary','gs://'+dict_path)
       new_df1 =  pd.read_csv(self.kw_ns.get('Paths','new_df1'))
       dict = pickle.load(open(self.abs_path+self.kw_ns.get('Paths','dictionary'), 'rb'))

我既無法讀取 csv 也無法讀取 pickle 文件,因為它會引發文件未找到錯誤。 我安裝並導入了 Pandas 0.25 版和 gcsfs。 關於如何完成的任何指示

使用gcsfs ,您需要進行一些設置,特別是打開一個類似 File 的對象,然后您可以讀取或寫入該對象。 請參閱文檔

import gcsfs
fs = gcsfs.GCSFileSystem(project='my-google-project')
with fs.open('my-bucket/my-file.txt', 'rb') as f:
    print(f.read())

另請注意,您可能需要進行身份驗證才能訪問所需的項目及其存儲桶。 如果您的程序在 Google Compute Engine (GCE) 中運行,則 GCE VM 將需要storage-rw范圍(或暗示storage-rw另一個范圍),並且服務帳戶將需要Storage Object Admin權限。

Python 程序訪問 Google Cloud Storage (GCS) 的更典型方法是:

  1. 安裝GCS Python 客戶端庫並調用該庫的 API,例如將文件上傳到 GCS blob(又名對象;它與文件最接近的東西)。 同樣,您將需要正確的范圍和權限。 它沒有實現gs://路徑名。
  2. 外殼到gsutil命令行調用以將本地文件復制到 GCS 或從 GCS 復制。 在這種情況下,您提供gs://路徑名。 (在Python 3我會用subprocess內置庫掏出。在Python 2我會使用subprocess32一封來自PyPI,這是同一個庫的向下移植版本,bug修復安裝庫)。
  3. 安裝gcsfuse ,運行它以將 GCS 存儲桶(可選擇縮小到特定的“子目錄”)掛載到本地目錄。 然后讀/寫該本地目錄中的文件。

GCS 實際上是一個平面對象存儲,而不是一個文件系統。 例如,它不支持多個同時讀取和寫入文件; 只是對 blob 進行原子讀取或寫入。

GCS 實際上沒有目錄,只有包含斜杠字符的路徑。 使用gcsfuse您可以使用--implicit-dirs掛載存儲桶,在這種情況下,它會偽造目錄(並且運行速度非常慢),否則您必須擁有“目錄占位符”(名稱以/結尾的 0 長度對象)。 如果沒有--implicit-dirs ,它將在某些操作期間創建占位符,但甚至看不到沒有它們的“子目錄”。

請閱讀gcsfuse 文檔,了解其語義與文件系統gcsfuse不同,即使gcsfuse盡最大努力彌合差距。

暫無
暫無

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

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