

今、aというフォルダにあるスクリプトを実行しているとして、そのスクリプトでaと同じ階層のbというフォルダ内のc.pyの絶対pathを取得したいです。

aとbは例えばdという名前の同じフォルダー内にあるということです。


CC BY-SA 3.0
2016-04-21T02:10:42.673
24196
2017-03-03T10:23:27.937
2016-04-26T06:44:28.740
3054
10111
question
python
実行ファイルのあるディレクトリの兄弟ディレクトリの絶対パスを得たい


bフォルダ以下にあるものを`import`するためには`__init__.py`を置く必要があります。  
`__init__.py`の中身は空で良いです。  
このファイルが置かれている場所は`import`で指定できるようになります。

**フォルダ構成**

[code]

    a/
    ├ hoge.py
    └ b/
      ├ __init__.py
      └ c.py
    
[/code]

**hoge.py**

[code]

    from b.c import something
    
    something()
    
[/code]

**c.py**

[code]

    def something():
        print('test')
    
[/code]

ちなみに`import`の仕方は`import b.c`としても良いです。  
ただ、そうインポートした場合は、メソッドを呼ぶ際に`b.c.something()`とする必要があります。

クラス定義も同様に呼び出すことができます。

**hoge.py**

[code]

    from b.c import something, TestClass
    
    something()
    
    test_class = TestClass()
    test_class.something()
    
[/code]

**c.py**

[code]

    def something():
        print('test')
    
    
    class TestClass():
        def __init__(self):
            pass
    
        def something(self):
            print('class test')
    
[/code]

詳細はドキュメントを確認してください。  
<http://docs.python.jp/2/tutorial/modules.html#packages>


CC BY-SA 3.0
2016-04-21T04:17:33.143
24206
2016-11-16T06:13:37.150
2016-11-16T06:13:37.150
7214
7214
24196
answer


コメントより

> 解決しました。実際にはもうひとつos.path.dirnameを用いて上の階層を指定しました。


CC BY-SA 3.0
2017-03-03T10:23:27.937
33070
2017-03-03T10:23:27.937
15185
24196
answer