os.path.abspath(“..”)返回“C:// User //”,这是false + __file__未定义 - >从Spyder3执行(Python 3.6)

时间:2017-12-13 20:59:38

标签: python python-3.x relative-path modularity

我想开发一个基于模块化的python应用程序。 这是我的第一个python应用程序,所以我尽量总结我的情况:

我用Python编写了几个月的代码。现在我正在开发一个统计问题的应用程序。由于我不想把我的代码编写成一个无休止的.py文件,我打算在单个py文件和相关文件夹中组织我的应用程序。因此,每个py文件都与另一个.py文件可以使用的功能相关。

举例说明我的应用程序文件夹结构

我的目录结构是:

Notebook.ipynb
__init__.py

A/
      function1.py
      function2.py
      function3.py
      __init__.py

B/
      function4.py
      function5.py
      function6.py
      __init__.py

C/
      imp.csv

应用程序应从notebook.ipynb执行并使用这些功能。 E.g:

Notebook.ipynb
     (uses) --> function1.py
          (uses) --> function4.py
               (imports) --> imp.csv

我在这里寻找方法来实现:
我发现我可以将模块(.py文件)导入到其他.py文件中。 关于我的例子:function1.py将从兄弟文件夹B导入function4.py。由于文件夹A和B是silbings,确定某个脚本的相对路径的功能将帮助我。但是我在使用最常见的实现方法时遇到了问题。我用过:

__file__ 
  
    

抛出错误“name file 未定义”

  
os.path.abspath("..") // 
  
    

返回“C:/ USERS”,它绝对不是我执行的脚本的父文件夹(真正的路径比那个更深;像C:USERS / name / folder1 / folder2 / applicationfolder / folderA)

  

备注:我没有运行整个脚本,而是(出于测试目的)Spyder3(Python3.6)中的单个语句。我的假设是问题与单个语句的执行有关。

---

  

我的问题是:

     
      
  • 我的假设是否正确?

  •   
  • 如果是:我如何测试.py文件的导入?

  •   
  • 如果否:这里有什么问题?


  •   
  • 关于最终的最终申请。我需要一个声明,确保为脚本提供相对路径   包含而不是导入它的脚本,只使用它   包含功能。所以关于我的例子:
    当   Notebook.ipynb(使用) - > function1.py
    function1.py(使用) - >   function4.py
    function4.py(进口) - > 1.csv

    我想要   确保虽然笔记本电脑是整体的被调用者   应用程序,function1.py和function4.py中的语句不是   在运行时返回Notebook.ipynb的文件夹。
    因为在   从另一个文件夹加载csv文件会有问题   function4.py。
  •   

很多人提前感谢!! :))

PS:我也对其他有助于构建我的应用程序源代码的建议持开放态度

0 个答案:

没有答案