2016-09-07 9 views
0
予備

に対する。私は確かに正しい用語であるかどうかは分かりません。私のPythonスクリプトの場所に関係なく、import myFileというコード行がある場合、myFile.pyfolder_defaultの場合、そのコード行は成功します。Accessファイルのインポートのpythonモジュール

私の問題:

folder_defaultで、私が持っている:

  1. useful_file_1.txtというテキストファイルが含まれているuseful_filesと呼ばれるサブフォルダ。
  2. my_misc.pyというPythonスクリプト。

my_misc.pyは、np.loadtxt('useful_files/useful_file_1.txt')のような行を持っています。 useful_files/useful_file_1.txtは、my_misc.pyをインポートするpythonファイルに相対的なフォルダパスではないため、folder_default以外の場所にあるpythonファイルでimport my_scriptを使用すると、この行は機能しません。私がそれを避けることができれば、グローバルファイルパスの使用を開始したくありません。

インポートされたPythonモジュールに関連するファイルパスを使用してファイルにアクセスするにはどうしたらいいですか?

質問が不明な場合は教えてください - 実際に自分のコンピュータにインストールされている偽のミニマムバージョンを作成しようとしましたが、それは単純化することを期待していましたが、もっと紛らわしい。

ありがとうございました。

答えて

0

getfileメソッドinspectのモジュールを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) 
関連する問題