当前位置: 首页 > 面试题库 >

使用Python的os.path,如何进入一个目录?

鲁景山
2023-03-14
问题内容

我最近将Django从v1.3.1升级到v1.4。

我以前settings.py

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname( __file__ ), 'templates').replace('\\', '/'),
    # Put strings here, like "/home/html" target="_blank">html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

这将指向/Users/hobbes3/Sites/mysite/templates,但是因为Django v1.4将项目文件夹移动到了与应用程序文件夹相同的级别,所以我的settings.py文件现在位于/Users/hobbes3/Sites/mysite/mysite/而不是/Users/hobbes3/Sites/mysite/

所以实际上我的问题是双重的:

  1. 如何使用os.path来查看上一级目录__file__。换句话说,我想/Users/hobbes3/Sites/mysite/mysite/settings.py找到/Users/hobbes3/Sites/mysite/templates使用相对路径。
  2. 我应该保持template(其具有跨应用程序模板,如文件夹adminregistration在项目等)/User/hobbes3/Sites/mysite水平或在/User/hobbes3/Sites/mysite/mysite

问题答案:
os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'templates'))

至于templates文件夹应该放哪里,我不知道自从Django 1.4刚问世以来,我还没有看过它。你可能应该在SE上问另一个问题以解决该问题。

你也可以使用normpath来清理路径,而不是abspath。但是,在这种情况下,Django需要绝对路径而不是相对路径。

为了实现跨平台兼容性,请使用os.pardir代替'..'



 类似资料:
  • 相比 pathlib 模块,os.path 模块不仅提供了一些操作路径字符串的方法,还包含一些或者指定文件属性的一些方法,如表 1 所示。 表 1 os.path 模块常用的属性和方法 方法 说明 os.path.abspath(path) 返回 path 的绝对路径。 os.path.basename(path) 获取 path 路径的基本名称,即 path 末尾到最后一个斜杠的位置之间的字符串

  • 我在Python 3.3项目中有一个名为/models的目录。 从我的我只是做了一个 在我的: 这在我的应用程序中非常有效。 我有一个依赖于另一个模型的模型,例如在我的我需要导入。py。当我这样做时: 我得到错误。 如何从同一模块/目录中的文件A导入类B?

  • 我正在构建一个定制的Java库。我把我的大部分“重复”代码都保存在那里,比如文件处理、字符串处理等。每次我想使用它们时,我都必须将该类复制并粘贴到我正在进行的其他项目中。有没有办法让这个自定义库类成为“依赖项”?我在用我的智能手机。

  • 问题内容: 实际上,我有一个xml文件和多个xsl文件(C:/ Users / santhanamk / Desktop / newxslt / Xslt输入/ xsl列表)。当我将xml和xsl0作为输入时,我需要以字符串形式获取输出。因此,在获得输出之后,我需要为xsl1提供与输入字符串相同的输出,以获取另一个输出(字符串)。然后,我需要将输出作为xsl2的输入字符串,以获取另一个输出。当给定

  • 问题内容: 我有两个名为和的项目。 这两个项目都是,并且都具有一个父项目名称s。 我在项目。 我有一个具有类的它具有一个向我返回消息“ ”的方法。 我想在中导入以便Bean可以在项目中的控制器中使用。 项目中有一个项目。 因此,请告诉我如何将一个项目导入另一个项目,以便只需导入即可将first的所有bean导入另一个项目? 我不想重写所有。 问题答案:

  • 问题内容: 我有一个脚本,其中包括从列表中打开文件,然后对该文件中的文本进行处理。我正在使用python multiprocessing和Pool尝试并行化此操作。脚本的抽象如下: 运行此命令时,每次迭代的进程ID的打印均相同。基本上,我想做的是获取输入列表中的每个元素并将其分叉到一个单独的进程中,但是似乎一个进程正在完成所有工作。 问题答案: 将一项任务分配到池中。您将需要多次调用 才能使用更多