現在のディレクトリとファイルのディレクトリを検索する

2011年02月28日に質問されました。  ·  閲覧回数 3.3M回  ·  ソース

John Howard picture
2011年02月28日

Pythonでは、次のコマンドを使用して検索できます。

  1. 現在のディレクトリ(Pythonスクリプトを実行したときにターミナルにいた場所)、および
  2. 私が実行しているファイルはどこにありますか?

回答

Russell Dias picture
2011年02月28日
3668

Pythonファイルが含まれているディレクトリへのフルパスを取得するには、そのファイルに次のように記述します。

import os 
dir_path = os.path.dirname(os.path.realpath(__file__))

(すでに使用している場合注呪文は動作しません上記のことをos.chdir()の値があるため、現在の作業ディレクトリを変更するには__file__定数は現在の作業ディレクトリからの相対値でありますos.chdir()呼び出しによって変更されません。)


現在の作業ディレクトリを取得するには、

import os
cwd = os.getcwd()

上記で使用されているモジュール、定数、関数のドキュメントリファレンス:

Nix picture
2011年02月28日
330

現在の作業ディレクトリ: os.getcwd()

また、 __file__属性は、実行しているファイルがどこにあるかを見つけるのに役立ちます。 このSOの投稿では、すべてを説明しています。Pythonで現在実行されているファイルのパスを取得するにはどうすればよいですか?

Daniel Reis picture
2012年12月05日
293

これは参考として役立つかもしれません:

import os

print("Path at terminal when executing this file")
print(os.getcwd() + "\n")

print("This file path, relative to os.getcwd()")
print(__file__ + "\n")

print("This file full path (following symlinks)")
full_path = os.path.realpath(__file__)
print(full_path + "\n")

print("This file directory and name")
path, filename = os.path.split(full_path)
print(path + ' --> ' + filename + "\n")

print("This file directory only")
print(os.path.dirname(full_path))
skovorodkin picture
2017年09月06日
127

Python 3.4で導入されたpathlibモジュール( PEP 428 — pathlibモジュール—オブジェクト指向ファイルシステムパス)により、パス関連のエクスペリエンスが大幅に向上します。

$ pwd
/home/skovorodkin/stack
$ tree
.
└── scripts
    ├── 1.py
    └── 2.py

現在の作業ディレクトリを取得するには、 Path.cwd()使用します。

from pathlib import Path

print(Path.cwd())  # /home/skovorodkin/stack

スクリプトファイルへの絶対パスを取得するには、 Path.resolve()メソッドを使用します。

print(Path(__file__).resolve())  # /home/skovorodkin/stack/scripts/1.py

また、スクリプトが配置されているディレクトリのパスを取得するには、 .parentにアクセスします( .parent前に.resolve()を呼び出すことをお勧めします)。

print(Path(__file__).resolve().parent)  # /home/skovorodkin/stack/scripts

__file__は、状況によっては信頼できない場合があることに注意してください。Pythonで現在実行されているファイルのパスを取得するにはどうすればよいですか?


Path.cwd()Path.resolve()およびその他のPathメソッドは、文字列ではなくパスオブジェクト(私の場合はPosixPath )を返すことに注意してください。 Python 3.4および3.5では、 open組み込み関数は文字列またはバイトオブジェクトでしか機能せず、 Pathオブジェクトをサポートしていなかったため、 Pathを変換する必要がありました。 Path.open()メソッドを使用しますが、後者のオプションでは、古いコードを変更する必要がありました。

$ cat scripts/2.py
from pathlib import Path

p = Path(__file__).resolve()

with p.open() as f: pass
with open(str(p)) as f: pass
with open(p) as f: pass

print('OK')

$ python3.5 scripts/2.py
Traceback (most recent call last):
  File "scripts/2.py", line 11, in <module>
    with open(p) as f:
TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py')

ご覧のとおり、 open(p)はPython3.5では機能しません。

PEP 519 — Python 3.6で実装されPathLikeオブジェクトのサポートがopen関数に追加され、 Pathオブジェクトをopen渡すことができるようになりました。

$ python3.6 scripts/2.py
OK
vinithravit picture
2012年04月24日
60

1.現在のディレクトリのフルパスを取得するには

    >>import os
    >>print os.getcwd()

o / p: "C:\ Users \ admin \ myfolder"

1.現在のディレクトリフォルダ名のみを取得するには

    >>import os
    >>str1=os.getcwd()
    >>str2=str1.split('\\')
    >>n=len(str2)
    >>print str2[n-1]

o / p: "myfolder"

Kurt picture
2012年10月07日
40

現在のファイルの現在のディレクトリを検索しようとしている場合:

OSにとらわれない方法:

dirname, filename = os.path.split(os.path.abspath(__file__))
Jazzer picture
2015年02月21日
34

Python 3.4を使用している場合は、新しい高レベルのpathlibモジュールがあります。これを使用すると、 pathlib.Path.cwd()を簡単に呼び出して、現在の作業ディレクトリを表すPathオブジェクトを取得できます。 、他の多くの新機能とともに。

この新しいAPIの詳細については、こちらをご覧ください

Ilia S. picture
2015年09月22日
29

現在のディレクトリのフルパスを取得するには:

os.path.realpath('.')
Blairg23 picture
2015年11月05日
29

#1への回答:

現在のディレクトリが必要な場合は、次のようにします。

import os
os.getcwd()

任意のフォルダ名が必要で、そのフォルダへのパスがある場合は、次のようにします。

def get_folder_name(folder):
    '''
    Returns the folder name, given a full folder path
    '''
    return folder.split(os.sep)[-1]

#2への回答:

import os
print os.path.abspath(__file__)
StormShadow picture
2013年10月09日
28

パーティーには少し遅れますが、現在の実行コンテキストの名前だけを見つける最も簡潔な方法は次のようになります。

current_folder_path, current_folder_name = os.path.split(os.getcwd())