現在のディレクトリの親をPython script。から取得します。たとえば、/home/kristina/desire-directory/scripts
この場合の欲望のパスは/home/kristina/desire-directory
知っている sys.path[0]
from sys
。しかし、私は解析したくないsys.path[0]
結果の文字列。 Pythonで現在のディレクトリの親を取得する別の方法はありますか?
スクリプトを含むディレクトリの親ディレクトリを取得(現在の作業ディレクトリに関係なく)するには、___file__
_を使用する必要があります。
スクリプト内で os.path.abspath(__file__)
を使用してスクリプトの絶対パスを取得し、 _os.path.dirname
_ を2回呼び出します。
_from os.path import dirname, abspath
d = dirname(dirname(abspath(__file__))) # /home/kristina/desire-directory
_
基本的に、_os.path.dirname
_を必要な回数だけ呼び出すことで、ディレクトリツリーをたどることができます。例:
_In [4]: from os.path import dirname
In [5]: dirname('/home/kristina/desire-directory/scripts/script.py')
Out[5]: '/home/kristina/desire-directory/scripts'
In [6]: dirname(dirname('/home/kristina/desire-directory/scripts/script.py'))
Out[6]: '/home/kristina/desire-directory'
_
現在の作業ディレクトリの親ディレクトリを取得するを使用する場合は、 _os.getcwd
_ を使用します。
_import os
d = os.path.dirname(os.getcwd())
_
pathlib
モジュール(Python 3.4以降で利用可能)を使用することもできます。
各_pathlib.Path
_インスタンスには、親ディレクトリを参照するparent
属性と、パスの祖先のリストであるparents
属性があります。 _Path.resolve
_ を使用して、絶対パスを取得できます。また、すべてのシンボリックリンクを解決しますが、それが望ましい動作でない場合は、代わりに_Path.absolute
_を使用できます。
Path(__file__)
およびPath()
は、それぞれスクリプトパスと現在の作業ディレクトリを表します。したがって、スクリプトディレクトリの親ディレクトリを取得(現在の作業ディレクトリ)を使用します
_from pathlib import Path
# `path.parents[1]` is the same as `path.parent.parent`
d = Path(__file__).resolve().parents[1] # Path('/home/kristina/desire-directory')
_
および現在の作業ディレクトリの親ディレクトリを取得
_from pathlib import Path
d = Path().resolve().parent
_
d
はPath
インスタンスであり、常に便利であるとは限らないことに注意してください。必要なときに簡単にstr
に変換できます:
_In [15]: str(d)
Out[15]: '/home/kristina/desire-directory'
_
これは私のために働いた(私はUbuntuにいます):
import os
os.path.dirname(os.getcwd())
つかいます Path.parent
pathlib
モジュールから:
from pathlib import Path
# ...
Path(__file__).parent
parent
への複数の呼び出しを使用して、パスをさらに進めることができます。
Path(__file__).parent.parent
import os
current_file = os.path.abspath(os.path.dirname(__file__))
parent_of_parent_dir = os.path.join(current_file, '../../')
単純にuse../your_script_name.py
を使用できます。たとえば、pythonスクリプトへのパスはtrading system/trading strategies/ts1.py
です。volume.csv
にあるtrading system/data/
を参照するとします。単に../data/volume.csv
として参照する必要があります
'..'
は、現在のディレクトリの親を返します。
import os
os.chdir('..')
現在のディレクトリは/home/kristina/desire-directory
。