Python:从子目录导入模块,该模块加载具有相对路径的非Python文件

进攻68

这是我尝试构建专业结构/层次结构的第一个python项目。我有以下目录结构:

project/  
---__init__.py  
---main.py  
---data_lib/  
------__init__.py  
------load.py  
------file.csv 

load.py中的代码是:

import pandas as pd
def load_csv():
    print pd.read_csv('file.csv')
if __name__=='__main__':
    load_csv()

main.py中的代码是:

from data_lib.load import load_csv
load_csv()

当load.py单独运行时,我得到了已加载的csv文件的pandas数据帧的打印输出。运行main.py时,出现错误IOError:文件file.csv不存在。我可以通过在以下定义的“ file.csv”之前添加路径前缀来解决此问题:

if __name__=='__main__':
    path_prefix=''
else:
    path_prefix='data_lib/'

这是标准的解决方案和编程实践,还是我应该避免这样做,而应该做其他事情(特别是因为csv文件将是一个需要定期更新而不会影响任何其他代码文件的文件)?

安德鲁·盖伊

在这种情况下,常见的惯用法是在所有文件路径的前面加上模块的绝对路径:

from os import path

path_prefix = path.dirname(path.abspath(__file__))
csv_path = path.join(path_prefix, 'file.csv')

这样,无论从哪里调用模块都无所谓,您仍然可以从模块内部加载资源。

如您所描述的那样,添加路径前缀仅在您从父目录中调用模块时才有效。当您从其他地方调用它时会发生什么?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从子目录或相对路径导入包

来自分类Dev

如何从另一个目录导入具有相对路径的 Python 模块?

来自分类Dev

使用Inno Setup从子目录(相对路径)安装外部文件

来自分类Dev

使用Inno Setup从子目录(相对路径)安装外部文件

来自分类Dev

python模块导入-相对路径问题

来自分类Dev

从相对路径在C ++中加载Python模块

来自分类Dev

打印目录及其子目录中所有文件的“完整”相对路径列表

来自分类Dev

即使目录中有名为__init.py__的文件,Python也无法从子目录导入模块

来自分类Dev

找不到子目录的.pro文件-当子目录包含相对路径时

来自分类Dev

在模块中具有相对于调用模块的文件的相对路径

来自分类Dev

无法从子目录导入模块

来自分类Dev

Python模块导入问题子目录

来自分类Dev

如何访问节点模块中具有相对路径的文件?

来自分类Dev

PHP和Apache的htaccess文件中子目录的相对路径

来自分类Dev

Git命令使用相对路径包括子目录中的文件

来自分类Dev

Python:模块中相对路径的使用

来自分类Dev

如何构造Python项目以允许从子目录导入命名模块

来自分类Dev

Python从相对路径导入错误

来自分类Dev

如何将带有模块的目录导入到Python路径,该目录是从子文件夹到原始源的符号链接?

来自分类Dev

SystemJS和ES模块导入的相对路径

来自分类Dev

从子子目录导入python

来自分类Dev

从多个并行子目录导入模块(Python)

来自分类Dev

从父子目录导入python模块

来自分类Dev

列出子目录中的文件并仅使用Windows命令行获取相对路径

来自分类Dev

Perl-模块内文件的相对路径

来自分类Dev

创建目录并从相对路径加载文件

来自分类Dev

Grunt-browserify + mapify + coffeescript =找不到具有相对路径的模块

来自分类Dev

从具有相对路径的模块引用Web工作者

来自分类Dev

找不到模块-相对路径

Related 相关文章

  1. 1

    从子目录或相对路径导入包

  2. 2

    如何从另一个目录导入具有相对路径的 Python 模块?

  3. 3

    使用Inno Setup从子目录(相对路径)安装外部文件

  4. 4

    使用Inno Setup从子目录(相对路径)安装外部文件

  5. 5

    python模块导入-相对路径问题

  6. 6

    从相对路径在C ++中加载Python模块

  7. 7

    打印目录及其子目录中所有文件的“完整”相对路径列表

  8. 8

    即使目录中有名为__init.py__的文件,Python也无法从子目录导入模块

  9. 9

    找不到子目录的.pro文件-当子目录包含相对路径时

  10. 10

    在模块中具有相对于调用模块的文件的相对路径

  11. 11

    无法从子目录导入模块

  12. 12

    Python模块导入问题子目录

  13. 13

    如何访问节点模块中具有相对路径的文件?

  14. 14

    PHP和Apache的htaccess文件中子目录的相对路径

  15. 15

    Git命令使用相对路径包括子目录中的文件

  16. 16

    Python:模块中相对路径的使用

  17. 17

    如何构造Python项目以允许从子目录导入命名模块

  18. 18

    Python从相对路径导入错误

  19. 19

    如何将带有模块的目录导入到Python路径,该目录是从子文件夹到原始源的符号链接?

  20. 20

    SystemJS和ES模块导入的相对路径

  21. 21

    从子子目录导入python

  22. 22

    从多个并行子目录导入模块(Python)

  23. 23

    从父子目录导入python模块

  24. 24

    列出子目录中的文件并仅使用Windows命令行获取相对路径

  25. 25

    Perl-模块内文件的相对路径

  26. 26

    创建目录并从相对路径加载文件

  27. 27

    Grunt-browserify + mapify + coffeescript =找不到具有相对路径的模块

  28. 28

    从具有相对路径的模块引用Web工作者

  29. 29

    找不到模块-相对路径

热门标签

归档