Django里使用open函数

Posted 寻笺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django里使用open函数相关的知识,希望对你有一定的参考价值。

Django里使用open函数

前言

在Django里使用open函数打开一个文件的时候,常常会遇到路径错误的问题。我在Django APP里写了一个爬虫用于为网站提供数据,但是需要打开文件,也就是在这里遇到了路径错误,爬虫本身运行起来是没有问题,但是放到Django里就出现了路径出错的问题。几番查找,终于在Stack Overflow上找到了解决方法,Stack Overflow上提出的问题和我遇到的一模一样,下面就简单翻译介绍下问题内容:

  • 当脚本文件处于foo/myapp/anotherapp目录,被读取文件baz.txt也处于foo/myapp/anotherapp目录时,一般的读取该文件的代码应该是这样写:

    file = open(‘./baz.txt‘)
  • 但是根据你启动Django项目所在的路径的不同,open函数里的参数路径也是不一样的,如:

    $pwd
    /Users/foo
    $python myapp/manage.py runserver

    我们在/Users/foo目录下启动Django项目,open函数会使用foo作为根目录

    $cd myapp
    $pwd
    /Users/foo/myapp
    $python manage.py runserver

    这样的话,则会使用myapp作为根目录

  • 在打开baz.txt文件的时候,对应的open函数参数就要发生改变,分别为

    file = open(‘./myapp/anotherapp/baz.txt‘)

    file = open(‘./anotherapp/baz.txt‘)
  • 那么有什么方法可以解决?我们可以采用读取当前目录,然后拼接的方式统一解决路径问题。

    import os
    module_dir = os.path.dirname(__file__)  # 获取当前目录
    file_path = os.path.join(module_dir, ‘baz.txt‘)
  • 原文地址

以上是关于Django里使用open函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用引导程序和 for 循环在 django 中创建电影片段?

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

使用 Django 模板作为片段

如何在 Django 中显式重置模板片段缓存?

django 如何用formset 显示数据库里的经过 过滤的数据?用户资料和修改资料?