繁体   English   中英

没有这样的文件或目录:Python CSV

[英]No such file or directory: Python CSV

我正在尝试将csv文件创建到其他目录中。 在开发服务器上运行代码时,它可以正常工作,但在生产环境中,会引发错误,提示No such file or directory:

以下是我的代码:

def write_operation(filename,data):
    with open("./static/" + filename, "wb") as f:
        writer = csv.writer(f)
        writer.writerows(data)

@csrf_exempt
def download_data(request):

    if request.POST.has_key('download_data'):
        start_date = str(request.POST['start_date']).replace('/','-')
        end_date = str(request.POST['end_date']).replace('/','-')

        start_date = datetime.datetime.strptime(start_date, "%Y-%m-%d %H:%M")
        end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d %H:%M")


        data.insert(0,('Barcode','Weight', 'Length','Breadth','Height'))
        write_operation('data.csv',data)

        return HttpResponse(json.dumps('Success'),content_type = "application/json")
    ctx = {}
    return render(request, 'dummy/download_data.html', ctx)

我收到的错误是:-

Exception Value: [Errno 2] No such file or directory: 'static/data.csv'

这是我的目录结构:-

├── modules
|   ├── dummy
│   │   └── views.py
├── static

您可以使用完整路径来防止这些错误。 例如,您的项目文件夹/home/project-name/ 您可以为配置定义常量,并将项目主文件夹设置为base_dir 然后,更改以下代码:

def write_operation(filename,data):
    with open(config.base_dir + "static/" + filename, "wb") as f:
        writer = csv.writer(f)
        writer.writerows(data)

编辑:我错过了与Django相关的脚本。 上面的解决方案是python的通用解决方案。 Django版本几乎相同。

在以下几行中添加settings.py文件

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

并通过以下方法更改您的方法:

from django.conf import settings
...

def write_operation(filename,data):
with open(settings.BASE_DIR + "static/" + filename, "wb") as f:
    writer = csv.writer(f)
    writer.writerows(data)

实际上,两者在基础上都是相同的。

为了避免此类问题,请使用BASE_DIR值,该值在项目settings.py中已初始化并分配。

如官方文档中所述:

像这样在项目内部构建路径:os.path.join(BASE_DIR,...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM