現在のファイルのディレクトリのフルパスを取得するにはどうすればよいですか?

2010年08月07日に質問されました。  ·  閲覧回数 1.4M回  ·  ソース

Shubham picture
2010年08月07日

現在のファイルのディレクトリパスを取得したい。 私は試した:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'

しかし、どうすればディレクトリのパスを取得できますか?

例えば:

'C:\\python27\\'

回答

Bryan Oakley picture
2010年08月07日
1834

Python 3

実行中のスクリプトのディレクトリの場合:

import pathlib
pathlib.Path(__file__).parent.absolute()

現在の作業ディレクトリの場合:

import pathlib
pathlib.Path().absolute()

Python2および3

実行中のスクリプトのディレクトリの場合:

import os
os.path.dirname(os.path.abspath(__file__))

現在の作業ディレクトリを意味する場合:

import os
os.path.abspath(os.getcwd())

file前後は、1つだけではなく、2つのアンダースコアであることに注意してください。

また、インタラクティブに実行している場合、またはファイル以外のもの(データベースやオンラインリソースなど)からコードをロードした場合、「現在のファイル」の概念がないため、 __file__が設定されない場合があることにも注意してください。 上記の回答は、ファイル内にあるpythonスクリプトを実行する最も一般的なシナリオを想定しています。

参考文献

  1. Pythonドキュメントのpathlib
  2. os.path 2.7os.path 3.8
  3. os.getcwd 2.7os.getcwd 3.8
  4. __file__変数はどういう意味/ですか?
Ron Kalian picture
2018年04月30日
116

Python 3以降、 Pathを使用することをお勧めします。

from pathlib import Path
print("File      Path:", Path(__file__).absolute())
print("Directory Path:", Path().absolute())  

ドキュメント: pathlib

注:Jupyter Notebookを使用している場合、 __file__は期待値を返さないため、 Path().absolute()を使用する必要があります。

Arminius picture
2019年02月27日
51

Python 3.xでは、次のことを行います。

from pathlib import Path

path = Path(__file__).parent.absolute()

説明:

  • Path(__file__)は、現在のファイルへのパスです。
  • .parentは、ファイルが置かれているディレクトリを示します。
  • .absolute()は、それへの完全な絶対パスを提供します。

pathlibは、パスを操作するための最新の方法です。 後で何らかの理由で文字列として必要になった場合は、 str(path)

chefsmart picture
2010年08月07日
10
import os
print os.path.dirname(__file__)
Akshaya Natarajan picture
2019年05月23日
5

これを試して:

import os
dir_path = os.path.dirname(os.path.realpath(__file__))
Alejandro Galera picture
2014年10月16日
4

osおよびos.pathライブラリは次のように簡単に使用できます

import os
os.chdir(os.path.dirname(os.getcwd()))

os.path.dirnameは、現在のディレクトリの上位ディレクトリを返します。 これにより、ファイル引数を渡さずに、また絶対パスを知らなくても、上位レベルに変更できます。

Nafeez Quraishi picture
2018年03月07日
3

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
Arpan Saini picture
2019年03月10日
3

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))

出力:絶対パスは、Pythonファイルが配置されるパスです

絶対パス:D:\ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ MatplotlibおよびseabornPart2

ファイルパス:D:\ Study \ Machine Learning \ Jupitor Notebook \ JupytorNotebookTest2 \ Udacity_Scripts \ Matplotlib and seaborn Part2 \ data \ Fuel_econ.csv

isfileExist:True

isadirectory:False

ファイル拡張子:.csv

Sun Bear picture
2019年10月13日
2

次のコマンドはすべて、Python3.6スクリプトの親ディレクトリのフルパスを返すことがわかりました。

Python 3.6スクリプト:

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-

from pathlib import Path

#Get the absolute path of a Python3.6 script
dir1 = Path().resolve()  #Make the path absolute, resolving any symlinks.
dir2 = Path().absolute() #See @RonKalian answer 
dir3 = Path(__file__).parent.absolute() #See @Arminius answer 

print(f'dir1={dir1}\ndir2={dir2}\ndir3={dir3}')

説明リンク: .resolve() 、. absolute()Path( file ).parent()。absolute()

Suyang Xu picture
2019年01月30日
1

システム:MacOS

バージョン:Python 3.6 w / Anaconda

import os

rootpath = os.getcwd()

os.chdir(rootpath)