每当尝试创建新目录时,azure函数中的python错误

每当尝试创建新目录时,azure函数中的python错误,python,directory,azure-functions,Python,Directory,Azure Functions,我正在尝试使用azure函数为python创建一个新的目录文件夹。但我无法在azure functions for python中创建新的目录和文件。我犯了以下错误 每当我在本地上为python执行Azure函数时,它都可以正常工作,但在Azure上不行 错误:- Error in folder creation: [Errno 30] Read-only file system: './HttpTrigger/logs' import logging import struct import

我正在尝试使用azure函数为python创建一个新的目录文件夹。但我无法在azure functions for python中创建新的目录和文件。我犯了以下错误

每当我在本地上为python执行Azure函数时,它都可以正常工作,但在Azure上不行

错误:-

Error in folder creation: [Errno 30] Read-only file system: './HttpTrigger/logs'
import logging
import struct
import sys
import azure.functions as func
import os

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    try:
        if not os.path.exists('./HttpTrigger/logs'):
            logging.info('Inside Forlder Creation')
            os.makedirs('./HttpTrigger/logs')

        f= open("test.txt","w+")
        for i in range(10):
            logging.info('Inside For')
            f.write("This is line %d\r\n" % (i+1))
        logging.info('Outside For')
        f.close() 
        return func.HttpResponse("Created",
            status_code=200
        )
    except Exception as e:
        return func.HttpResponse(f"Error in floder creation : {e}", status_code=400)

我试图在HttpTrigger函数中创建新的日志文件夹,但出现上述错误

请检查以下代码:-

Error in folder creation: [Errno 30] Read-only file system: './HttpTrigger/logs'
import logging
import struct
import sys
import azure.functions as func
import os

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    try:
        if not os.path.exists('./HttpTrigger/logs'):
            logging.info('Inside Forlder Creation')
            os.makedirs('./HttpTrigger/logs')

        f= open("test.txt","w+")
        for i in range(10):
            logging.info('Inside For')
            f.write("This is line %d\r\n" % (i+1))
        logging.info('Outside For')
        f.close() 
        return func.HttpResponse("Created",
            status_code=200
        )
    except Exception as e:
        return func.HttpResponse(f"Error in floder creation : {e}", status_code=400)


有没有办法在azure functions for python中创建新目录?请告诉我是否有任何方法。

Azure函数(以及更一般的无服务器函数)的要点是由特定事件触发,执行一些逻辑,然后退出。它不像普通的服务器,您可以访问文件系统,也可以读取/写入文件。实际上,你不能确定它总是由同一台物理机器执行;Azure为您抽象了所有这些概念(因此命名为“无服务器”)


现在,如果你真的需要写文件,你应该看看。这是一个云本地服务,您可以在其中下载和上传文件。从Azure功能中,您必须使用Blob存储API来操作文件。

您的实际应用程序文件夹将从zip读取,因此不允许您创建文件夹或文件。但是,您应该能够在中创建临时目录,如/tmp目录。也就是说,你不应该依赖于他们的存在,他们(顾名思义)只是暂时的。因此,请坚持@frankie567的建议,使用Azure Storage之类的工具来存储您希望稍后提取的工件。

您可以在临时文件夹或函数执行文件夹中创建文件或目录,因为临时文件夹中的内容不会一直保存,因此您可以在执行目录中创建目录,您可以使用
Context
binding使用
function\u目录
获取目录。有关更多信息,请参阅此文档:

下面是我的测试代码,我创建文件夹和文件,然后发送文件名作为响应

import logging
import os
import time
import datetime
import json
import azure.functions as func


def main(req: func.HttpRequest,context: func.Context) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    t = datetime.datetime.now().strftime("%H-%M-%S-%f")
    foldername=context.function_directory+"/newfolder"+t
    os.makedirs(foldername)
    suffix = ".txt"
    newfile= t+suffix
    os.getcwd()
    os.chdir(foldername)
    if not os.path.exists(newfile):
        f = open(newfile,'w')
        f.write("test")
        f.close()
    data=[]
    for filename in os.listdir(context.function_directory):
        print(filename)
        d1={"filename":filename}
        data.append(d1)
    jsondata=json.dumps(data)


    return func.HttpResponse(jsondata)
这是结果图片,你可以看到我可以创建文件夹和文件


如果您需要临时处理一些文件,那么azure函数将提供一个临时目录。

下面是一段代码片段

导入临时文件
从操作系统导入listdir
tempFilePath=tempfile.gettempdir()
fp=tempfile.NamedTemporaryFile()
fp.write(b'helloworld!')
filedirlistinemp=listdir(tempFilePath)

你能用我的方式实施吗?@Akshay Godase,如果这对你有帮助,请接受它作为答案。谢谢我尝试使用上下文获取函数目录并将文件写入该目录。看起来仍然存在权限问题。错误:结果:失败异常:OSError:[Errno 30]只读文件系统:'/home/site/wwwroot/confluence/audio_20200629.wav'。你能帮忙吗。