gpt4 book ai didi

python - bash shell 将当前文件的路径存储为变量?

转载 作者:行者123 更新时间:2023-12-04 13:45:51 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How can I get the source directory of a Bash script from within the script itself?

(72 个回答)



Get current directory of file after getting called by another bash script [duplicate]

(2 个回答)


3年前关闭。




在 Python 中启动项目时,我想将一些环境变量保存在名为 environment_variables 的文件中。并在 bashrc 中获取此文件。

该文件如下所示:

username=$(whoami)

# project root path
export PROJECT_DIR='/home/'$username'/nuclei_segmentation/'

# project data path
export DATA_DIR=$PROJECT_DIR"data/"

# location of models
export MODEL_DIR=$PROJECT_DIR"models/"

# project output data
export OUTPUT_DIR=$PROJECT_DIR"output/"

我想换 PROJECT_DIR路径,因此它与平台/名称无关。所以这个 environment_variables文件将始终在项目的根目录中,我想设置 PROJECT_DIR永远是 environment_variables的位置文件。

我以为我可以用 PWD 做到这一点但是当从 bashrc 调用这会产生错误时,我还想到了一个使用 find 从根目录搜索文件的解决方案,但这似乎很复杂,并且认为必须有更好的方法?

最佳答案

如果我完全理解你想用这个去哪里,我的建议是

  • 使代码尽可能在当前目录之外工作。
  • 如果可以避免,请不要在用户环境中放置多个变量。
  • 如果您必须拥有环境变量,请给它们一个名称,以便清楚地传达它们的相关内容。

  • 在更具体的情况下,命名项目根目录的单个变量应该是您真正需要的。如果预期文件在当前目录中,则不需要设置它。
    export NUC_SEG_DIR=$HOME/nuclei_segmentation

    在您的 Python 代码中,输入合理的默认值。在这种特殊情况下,期望 os.path.join(os.environ['NUC_SEG_DIR'], 'data')指向您的 data目录等。如果用户想要覆盖它,使用符号链接(symbolic link)很容易。确保在代码中对此进行了参数化,以便在您希望将来对其进行配置时可以轻松地在一个地方进行覆盖。也许像
    def nuc_seg(root_dir=os.environ['NUC_SEG_DIR'], data_dir='./data', model_dir='./models', output_dir='./output'):
    if root_dir == '':
    root_dir='.'
    ... your code here

    也许稍后让您的命令行界面让用户通过命令行选项或配置文件覆盖这些值。

    同样,不要要求用户编辑他们的 .bash_profile或类似的 - 如果他们想在不同的目录中运行多个实验,或者其他什么?他们可以弄清楚如何使环境变量永久化,或者如果您的用户不熟悉 shell 的基础知识,您甚至可以将其记录为一个选项。

    关于python - bash shell 将当前文件的路径存储为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48733200/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com