我想使用python Azure函数从Azure blob存储中读取csv文件。使用下面的代码,我得到了错误:
[Errno 30]只读文件系统:'/ home / site / wwwroot / my_csv_file'
代码段是:
work_directory= os.getcwd()
filename = my_csv_file
account_name = <blob_storage>
account_key = <blob_key>
os.chmod(work_directory, 0o777)
input_fpath=os.path.join(work_directory, filename)
block_blob_service = BlockBlobService(account_name, account_key)
block_blob_service.get_blob_to_path(container_name=<input_container_name>, blob_name=filename,
file_path=input_fpath)
如何更改权限或如何以其他方式将csv读取为python?
答案 0 :(得分:1)
已解决
使用<v-icon
v-if="item.hasOwnProperty('name')"
...
>...</v-icon>
而不是get_blob_to_text
:
get_blob_to_path
找到了解决方案here。
blobstring = block_blob_service.get_blob_to_text(<input_container_name>, file_name).content
不是必需的。因此,整个代码如下:
chmod
答案 1 :(得分:0)
目前,Python Azure函数不允许写入文件,它是只读模式,因此无法更改。因此,您既不能使用chmod
方法,也不能使用get_blob_to_path
,因为您可以将文件写入磁盘。
因此,也许您可以将文件读取到流中,然后将其发送给响应。您可以参考我的代码,我使用Blob binding来读取文本文件。
def main(req: func.HttpRequest,inputblob: func.InputStream) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(inputblob.read(size=-1))
else:
return func.HttpResponse(
"Please pass a name on the query string or in the request body",
status_code=400
)