【问题标题】:Tell python to access resources above the path of the script告诉python访问脚本路径上面的资源
【发布时间】:2016-09-06 23:48:03
【问题描述】:

如果您从 /tmp/myfolder/myscript/ 运行脚本,并且想要访问 myfolder 中的资源,您如何在 python 中做到这一点?

我确实得到了带有__file__ 的文件路径,(我被告知不要使用它,因为它可能并不总是被填充)但我不能像在 bash 中那样,我“cd ..”去上一个目录,因为 Python 不理解。

我想运行python脚本,不管文件夹在哪里,它总是会上一层,得到我需要的资源。

【问题讨论】:

  • 我认为您可以很确定 __file__ 将在您的情况下填充。所以,os.path.join(os.path.dirname(__file__), '..') 是你获取父目录的最佳方式

标签: python


【解决方案1】:

Python 确实理解 cd: os.chdir()。我不确定你到底想做什么,但你可以试试:

import os
os.chdir('..')

这会将您的工作目录更改为当前目录之上的目录(就像cd ..)。

您还可以将.. 用于许多使用路径的操作。例如,如果您要打开一个目录中的文件:open('../myfile.txt') 等。您可能还会发现this question 的答案很有用,具体取决于您的目标。

【讨论】:

  • 正是我想要的。我确实有一个脚本在我的项目的子目录中运行,而资产在父文件夹中,因此要访问该元素,我需要上一层。这允许我更改 cwd,以便我可以访问资产,谢谢!
  • 我仍然宁愿使用__file__ 而不是 CWD。当前工作目录实际上不必是脚本所在的位置,例如,如果您运行python dirname/script.py,CWD 将比脚本高一级。
【解决方案2】:

我不清楚您在说什么,但我推断您说的是包内引用。您可以阅读更多关于它的信息here,但一般概念是您在尝试从另一个包导入模块时使用from .. import module

语句中的.. 告诉编译器上一层并查找名为module 的模块。您也可以使用for . import module,它将导入 模块name来自当前目录和from ../folder import module

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2019-08-11
    • 2018-03-08
    • 2020-01-30
    相关资源
    最近更新 更多