![](/img/trans.png)
[英]Struggling to read csv files from Google Cloud Storage bucket
[英]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) 的更典型方法是:
gs://
路徑名。gsutil
命令行調用以將本地文件復制到 GCS 或從 GCS 復制。 在這種情況下,您提供gs://
路徑名。 (在Python 3我會用subprocess
內置庫掏出。在Python 2我會使用subprocess32
一封來自PyPI,這是同一個庫的向下移植版本,bug修復安裝庫)。gcsfuse
,運行它以將 GCS 存儲桶(可選擇縮小到特定的“子目錄”)掛載到本地目錄。 然后讀/寫該本地目錄中的文件。GCS 實際上是一個平面對象存儲,而不是一個文件系統。 例如,它不支持多個同時讀取和寫入文件; 只是對 blob 進行原子讀取或寫入。
GCS 實際上沒有目錄,只有包含斜杠字符的路徑。 使用gcsfuse
您可以使用--implicit-dirs
掛載存儲桶,在這種情況下,它會偽造目錄(並且運行速度非常慢),否則您必須擁有“目錄占位符”(名稱以/
結尾的 0 長度對象)。 如果沒有--implicit-dirs
,它將在某些操作期間創建占位符,但甚至看不到沒有它們的“子目錄”。
請閱讀gcsfuse 文檔,了解其語義與文件系統gcsfuse
不同,即使gcsfuse
盡最大努力彌合差距。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.