Pythonでは、どのコマンドを使って見つけることができますか?
Pythonファイルが含まれているディレクトリへのフルパスを取得するには、そのファイルに次のように書きます。
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
(__file__
定数の値は現在の作業ディレクトリからの相対値であり、os.chdir()
呼び出しでは変更されないため、現在の作業ディレクトリを変更するためにos.chdir()
を既に使用している場合、上記の呪文は機能しません。)
現在の作業ディレクトリを取得するには
import os
cwd = os.getcwd()
上記で使用されているモジュール、定数、関数のドキュメントリファレンス
os
および os.path
モジュール。__file__
定数os.path.realpath(path)
( "指定されたファイル名の正規のパス、パスにあるシンボリックリンクを削除します" )os.path.dirname(path)
( "パス名path
のディレクトリ名" を返す)os.getcwd()
( "現在の作業ディレクトリを表す文字列" )os.chdir(path)
( "現在の作業ディレクトリをpath
に変更" )現在の作業ディレクトリ: os.getcwd()
そして __file__
属性 は、実行しているファイルがどこにあるのかを見つけるのに役立ちます。このSO投稿はすべてを説明しています: Pythonで現在実行されているファイルのパスを取得するにはどうすればいいですか?
あなたはこれが参考になるかもしれません:
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))
pathlib
module、 introduced in Python 3.4( 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
)を返すことに注意してください。 open
組み込み関数は文字列またはバイトオブジェクトでしか動作せず、Path
オブジェクトをサポートしていなかったため、Python 3.4および3.5では多少の痛みが生じました。 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)
はPython 3.5では機能しません。
PEP 519 —ファイルシステムパスプロトコルの追加 、Python 3.6で実装、 PathLike
オブジェクトのサポートを open
関数に追加、そのため、Path
オブジェクトをopen
関数に直接渡すことができます:
$ python3.6 scripts/2.py
OK
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"
あなたが現在いるファイルの現在のディレクトリを見つけようとしているなら:
OSにとらわれない方法:
dirname, filename = os.path.split(os.path.abspath(__file__))
Python 3.4を使用している場合は、他の多くの新機能とともに、現在の作業ディレクトリを表すpathlib
オブジェクトを取得するためにpathlib.Path.cwd()
を便利に呼び出すことができる、まったく新しい上位レベルのPath
モジュールがあります。
この新しいAPIに関するより多くの情報は ここ にあります。
#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__)
パーティーには少し遅れますが、現在の実行コンテキストの名前だけを見つける最も簡潔な方法は、
current_folder_path, current_folder_name = os.path.split(os.getcwd())
Pathlibは、現在のスクリプトを含むディレクトリを取得するためにこのように使用することができます。
import pathlib
filepath = pathlib.Path(__file__).resolve().parent
現在のディレクトリのフルパスを取得するには:
os.path.realpath( '。')
現在実行されているスクリプトの場所を検索している場合は、sys.argv[0]
を使用してフルパスを取得できます。
現在の作業ディレクトリを確認するには、次のスクリプトを入力します。
import os
current_working_directory = os.getcwd()
質問1にはos.getcwd() # get working dir
とos.chdir(r'D:\Steam\steamapps\common') # set working dir
を使用します
sys.argv[0]
は不変であり、常に現在のファイル(モジュールオブジェクトパス)を返し、os.chdir()
の影響を受けないため、質問2にはsys.argv
を使用することをお勧めします。また、あなたはこのようにすることができます:
import os
this_py_file = os.path.realpath(__file__)
# vvv Below comes your code vvv #
しかし、そのスニペットとsys.argv[0]
は動作しないか、PyInstallerでコンパイルされたときに動作しません。これは、マジックプロパティが__main__
レベルで設定されておらず、sys.argv[0]
作業ディレクトリの影響を受けます)。
作業ディレクトリをpythonで取得する。次のコードを使用することができます。
import os
cwd = os.getcwd() #to get current working directory
print(cwd)