如何从我调用python脚本的目录中找到我的ini文件的绝对路径,而不管调用位置如何?

时间:2016-09-18 17:14:00

标签: python-3.x absolute-path

我的项目的文件夹结构如下

-ExpenseManager
    config.ini
    Icon.png
    __init__.py
    +bin
    -expenseManager
        main.py
        charting.py
        gui.py
        fileHandling.py

此项目位于此路径/ home / sudeshna / Desktop / ExpenseManager中。 main.py具有可执行权限,当我从该目录调用该函数时,我可以运行该程序(在../ ExpenseManager / expenseManager /)内。

但是,当我尝试从基目录[/]调用该函数时,我得到一个NoSectionError。 我发现了它背后的原因,因为我的main.py尝试读取config.ini文件以获取一些信息。 阅读本文的代码是: -

    d = Path.dirname(Path.dirname(Path.abspath("__file__")))
    my_file = (os.path.join(d,'config.ini'))
    parser = SafeConfigParser()
    parser.read(my_file)
    folder_path = parser.get('folder_structure','path')

我一直试图找到一种方法,使程序读取config.ini的绝对路径,而不管调用此脚本的位置。 直到现在我已经使用了

    from pathlib import Path
    p = Path("../ExpenseManager/config.ini").resolve()

但它甚至没有从基目录[/]找到ExpenseManager文件夹。

我试图更改这些行

    d = Path.dirname(Path.dirname(Path.abspath("__file__")))
    my_file = (os.path.join(d,'config.ini'))

   my_file = os.path.abspath('ExpenseManager/config.ini')

我现在面临的问题是my_file变为

/home/sudeshna/Desktop/ExpenseManager/expenseManager/ExpenseManager/config.ini

而不是

/home/sudeshna/Desktop/ExpenseManager/config.ini

我该怎么办?

1 个答案:

答案 0 :(得分:0)

我已经能够解决问题了。但我实际上并不了解造成问题的原因。我改进了以下代码中的代码,

   d = Path.dirname(Path.dirname(Path.abspath(__file__)))

保持其他一切相同,我删除了""围绕全局变量

     __file__

我现在感到困惑的是

  if "__file__" was not working , 

上面的代码段是如何在包含main.py代码的目录中工作的,即(../ExpenseManager/expenseManager)。

欢迎任何进一步的解释。 如果我在做一些概念上的错误,请指导我。