![](/img/trans.png)
[英]When python pandas.read_csv on azure, encoding is not changing
[英]Can not read csv with pandas in azure functions with python
我在 Azure function python 中創建了一個 Azure Blob 存儲觸發器。一個 CSV 文件添加到 Blob 存儲中,我嘗試用 pandas 讀取它。
import logging
import pandas as pd
import azure.functions as func
def main(myblob: func.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n"
f"Blob Size: {myblob.length} bytes")
df_new = pd.read_csv(myblob)
print(df_new.head())
如果我將myblob
傳遞給pd.read_csv
,那么我會得到UnsupportedOperation: read1
Python blob trigger function processed blob
Name: samples-workitems/Data_26112022_080027.csv
Blob Size: None bytes
[2022-11-27T16:19:25.650Z] Executed 'Functions.BlobTrigger1' (Failed, Id=2df388f5-a8dc-4554-80fa-f809cfaeedfe, Duration=1472ms)
[2022-11-27T16:19:25.655Z] System.Private.CoreLib: Exception while executing function: Functions.BlobTrigger1. System.Private.CoreLib: Result: Failure
Exception: UnsupportedOperation: read1
如果我通過myblob.read()
,
df_new = pd.read_csv(myblob.read())
它給出TypeError: Expected file path name or file-like object, got <class 'bytes'> type
Python blob trigger function processed blob
Name: samples-workitems/Data_26112022_080027.csv
Blob Size: None bytes
[2022-11-27T16:09:56.513Z] Executed 'Functions.BlobTrigger1' (Failed, Id=e3825c28-7538-4e30-bad2-2526f9811697, Duration=1468ms)
[2022-11-27T16:09:56.518Z] System.Private.CoreLib: Exception while executing function: Functions.BlobTrigger1. System.Private.CoreLib: Result: Failure
Exception: TypeError: Expected file path name or file-like object, got <class 'bytes'> type
來自Azure 函數文檔:
InputStream 是 File-like object 表示輸入 blob。
read_csv 采用 filepath_or_bufferstr,路徑 object 或類似文件 object
所以從技術上講,我應該閱讀這個 object。我在這里缺少什么拼圖?
如果你參考這篇文章,它說這段代碼可以工作。 但建議用於較小的文件,因為整個文件進入 memory。不建議用於較大的文件。
import logging
import pandas as pd
import azure.functions as func
from io import BytesIO
def main(myblob: func.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n"
f"Blob Size: {myblob.length} bytes")
df_new = pd.read_csv(BytesIO(myblob.read()))
print(df_new.head())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.