現在のファイルのディレクトリパスを取得したいのですが。
私は試した:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
しかし、どうすればディレクトリのパスを取得できますか?例えば:
'C:\\python27\\'
実行されているスクリプトのディレクトリを意味するなら:
import os
os.path.dirname(os.path.abspath(__file__))
現在の作業ディレクトリを意味するなら:
import os
os.getcwd()
file
の前後には2つのアンダースコアがあり、1つだけではありません。
また、対話的に実行している場合や、ファイル以外のもの(例:データベースやオンラインリソース)からコードを読み込んだ場合は、 "現在のファイル"という概念がないため__file__
が設定されない場合があります。上記の答えは、ファイル内にあるpythonスクリプトを実行するという最も一般的なシナリオを想定しています。
import os
print os.path.dirname(__file__)
次のようにos
とos.path
ライブラリを簡単に使うことができます
import os
os.chdir(os.path.dirname(os.getcwd()))
os.path.dirname
は現在のディレクトリから上位ディレクトリを返します。ファイル引数を渡さず、絶対パスを知らなくても、上位レベルに変更できます。
Python 3.xでは、
from pathlib import Path
path = Path(__file__).parent.absolute()
説明:
Path(__file__)
は現在のファイルへのパスです。.parent
はあなたに ディレクトリ ファイルが入っているディレクトリを与えます。.absolute()
はあなたに 絶対パス を与えます。pathlib
を使うことは、パスを扱うための現代的な方法です。何らかの理由で後で文字列として必要になった場合は、str(path)
を実行してください。
PYTHONで有用なパスの性質:
from pathlib import Path
#Returns the path of the directory, where your script file is placed
mypath = Path().absolute()
print('Absolute path : {}'.format(mypath))
#if you want to go to any other file inside the subdirectories of the directory path got from above method
filePath = mypath/'data'/'fuel_econ.csv'
print('File path : {}'.format(filePath))
#To check if file present in that directory or Not
isfileExist = filePath.exists()
print('isfileExist : {}'.format(isfileExist))
#To check if the path is a directory or a File
isadirectory = filePath.is_dir()
print('isadirectory : {}'.format(isadirectory))
#To get the extension of the file
fileExtension = mypath/'data'/'fuel_econ.csv'
print('File extension : {}'.format(filePath.suffix))
OUTPUT: 絶対パスISピットンファイルIS配置先のパス
絶対パス:D:¥Study¥Machine Learning¥Jupitor Notebook¥JupytorNotebookTest2¥Udacity_Scripts¥Matplotlibおよびseaborn Part2
ファイルパス:D:\ Study\Machine Learning\Jupitor Notebook\JupytorNotebookTest2\Udacity_Scripts\Matplotlibとseaborn Part2\data\fuel_econ.csv
isfileExist:True
isadirectory:False
ファイル拡張子:.csv
現在のフォルダを取得するために、CGIのIISの下でpythonを実行するときに使用する関数を作成しました。
import os
def getLocalFolder():
path=str(os.path.dirname(os.path.abspath(__file__))).split('\\')
return path[len(path)-1]
プラットフォーム(macOS/Windows/Linux)間でマイグレーションの一貫性を保つには、次のことを試してください。
path = r'%s' % os.getcwd().replace('\\','/')
IPython
には、現在の作業ディレクトリを取得するためのマジックコマンド%pwd
があります。次のように使用することができます。
from IPython.terminal.embed import InteractiveShellEmbed
ip_Shell = InteractiveShellEmbed()
present_working_directory = ip_Shell.magic("%pwd")
IPython Jupyter Notebookでは%pwd
は次のように直接使用できます。
present_working_directory = %pwd
これを試して:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
システム:MacOS
バージョン:Python 3.6(アナコンダ付き)
import os rootpath = os.getcwd() os.chdir(rootpath)