8

私はこのパターンをたくさん使用していることがわかりました:

os.path.join(os.path.dirname(__file__), file_path)

そこで、このような小さなユーティリティがたくさんあるファイルに関数を入れることにしました。

def filepath_in_cwd(file_path): 
    return os.path.join(os.path.dirname(__file__), file_path)

問題は、現在の__file__ファイル、したがって現在のフォルダを返すことであり、私は全体のポイントを逃しました。私はこの醜いハックを行うことができます(またはそのままパターンを書き続けることができます):

def filepath_in_cwd(py_file_name, file_path): 
    return os.path.join(os.path.dirname(py_file_name), file_path)

そして、それへの呼び出しは次のようになります。

filepath_in_cwd(__file__, "my_file.txt")

__file__しかし、スタックの1つ上のレベルの関数を取得する方法があれば、それをお勧めします。これを行う方法はありますか?

4

1 に答える 1

12

これはそれを行う必要があります:

inspect.getfile(sys._getframe(1))

sys._getframe(1)呼び出し元フレームをinspect.getfile(...)取得し、ファイル名を取得します。

于 2012-08-01T11:14:03.693 に答える