【问题标题】:Access files relative to imported python module访问与导入的 python 模块相关的文件
【发布时间】:2016-09-07 02:08:13
【问题描述】:

初步:

我在 Windows 10 上有 Anaconda 3,还有一个文件夹 folder_default,我已将它放在 Python 路径上。我实际上不确定这是否是正确的术语,所以要明确一点:无论我的 Python 脚本在哪里,如果我有一行代码写着 import myFile,那么如果 myFile.py 在里面,那一行代码就会成功folder_default.

我的问题:

folder_default,我有:

  1. 名为useful_files 的子文件夹包含名为useful_file_1.txt 的文本文件。
  2. 一个名为my_misc.py的python脚本。

my_misc.py 有一行类似于:np.loadtxt('useful_files/useful_file_1.txt')。如果我在folder_default 以外的位置的python 文件中使用import my_script,则此行不起作用,因为useful_files/useful_file_1.txt 不是相对于导入my_misc.py 的python 文件的文件夹路径。如果可以避免的话,我不想开始使用全局文件路径。

如何使用相对于导入的 python 模块而不是相对于导入该模块的 python 脚本的文件路径访问文件?

如果问题不清楚,请告诉我 - 我试图在我的计算机上编写一个假的、最小版本的设置,希望这样可以简化事情,但如果这真的让事情变得更重要,我可以更改它令人困惑。

谢谢。

【问题讨论】:

    标签: python import relative-path python-import


    【解决方案1】:

    您可以使用inspect模块的getfile方法作为inspect.getfile(inspect.currentframe())获取当前模块的路径。 例如:

    # File : my_misc.py
    import os, inspect
    
    module_dir_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # get path to the directory of current module
    useful_file_path = os.path.join(module_dir_path,'useful_files','useful_file_1.txt')
    # path stored in useful_file_path. do whatever you want!
    
    np.loadtxt(useful_file_path)
    

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 2014-06-15
      • 2021-10-27
      • 2015-10-06
      • 2020-07-23
      • 2014-01-09
      • 1970-01-01
      • 2011-01-24
      • 2019-07-03
      相关资源
      最近更新 更多