6

コードを「実行」しているファイルへのパスを見つける最も簡単な方法は何ですか?これは、次のファイルfoo.pyを含むファイルがある場合を意味します。

print(here())

見たいです/some/path/foo.py(実際には、「実行中」のファイルは複雑ですが、上記は明確に定義されていると思います。実行時に、そのファイルへのパスを提供する関数を含むソースファイルです)。

過去にこれを必要としていたのは、テスト(外部ファイルが必要)を自己完結型にするためでした。現在、プログラムに必要なサポートファイルを見つけるのに役立つかどうか疑問に思っています。しかし、私はこれを行うための良い方法を見つけたことがありません。inspectモジュールは機能するはずですが、そのモジュールで定義されているクラスまたは関数が必要なようです。

特に、モジュールインスタンスには__file__属性が含まれていますが、「現在の」モジュールを取得する方法がわかりません。オブジェクトには__module__属性がありますが、それはモジュールであり、モジュールインスタンスではありません。

例外をスローしてキャッチし、内容を調べるのも一つの方法だと思いますが、それは大変な作業のようです。確かに私が逃したシンプルで簡単な方法はありますか?

4

2 に答える 2

12

現在のファイルの絶対パスを取得するには:

import os
os.path.abspath(__file__)
于 2012-08-22T00:14:50.090 に答える
3

パッケージと共に配布された外部ファイルのコンテンツを取得するには、pkg_util.get_data()(stdlib) またはpkg_resources.resouce_string()(setuptools) を使用して、zip アーカイブまたは py2exe、PyInstaller などによって作成されたスタンドアロンの実行可能ファイルからの実行をサポートできます。

于 2012-08-22T01:05:39.057 に答える