Pythonのos
モジュールには、ディレクトリが存在するかどうかを調べる方法があります。
>>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode
True/False
ファイルかディレクトリかにかかわらず、 os.path.isdir
、または os.path.exists
を探しています。
例:
import os
print(os.path.isdir("/home/el"))
print(os.path.exists("/home/el/myfile.txt"))
とても近い!現在存在するディレクトリの名前を渡すと、os.path.isdir
はTrue
を返します。存在しない場合、またはディレクトリでない場合は、False
が返されます。
Python 3.4では pathlib
モジュール が標準ライブラリに導入されました。これはファイルシステムのパスを処理するためのオブジェクト指向のアプローチを提供します。
In [1]: from pathlib import Path
In [2]: p = Path('/usr')
In [3]: p.exists()
Out[3]: True
In [4]: p.is_dir()
Out[4]: True
In [5]: q = p / 'bin' / 'vim'
In [6]: q.exists()
Out[6]: True
In [7]: q.is_dir()
Out[7]: False
Pathlibは、Python 2.7でも PyPiのpathlib2モジュールからも入手できます。
はい、 os.path.exists()
を使用してください。
2内蔵機能で確認できます
os.path.isdir("directory")
指定されたディレクトリが利用可能であることをブール値のtrueにします。
os.path.exists("directoryorfile")
指定されたディレクトリまたはファイルが利用可能であれば、それは真偽値を真にします。
パスがディレクトリかどうかを確認します。
os.path.isdir("directorypath")
パスがディレクトリの場合はブール値のtrueを返します。
はい os.path.isdir(path) を使用
のように:
In [3]: os.path.exists('/d/temp')
Out[3]: True
確かにos.path.isdir(...)
を投げ入れるのでしょう。
os.stat
バージョンを提供するために(python 2):
import os, stat, errno
def CheckIsDir(directory):
try:
return stat.S_ISDIR(os.stat(directory).st_mode)
except OSError, e:
if e.errno == errno.ENOENT:
return False
raise
osはあなたにこれらの機能の多くを提供します:
import os
os.path.isdir(dir_in) #True/False: check if this is a directory
os.listdir(dir_in) #gets you a list of all files and directories under dir_in
入力パスが無効な場合、listdirは例外をスローします。
#You can also check it get help for you
if not os.path.isdir('mydir'):
print('new directry has been created')
os.system('mkdir mydir')
便利な Unipath
モジュールがあります。
>>> from unipath import Path
>>>
>>> Path('/var/log').exists()
True
>>> Path('/var/log').isdir()
True
あなたが必要とするかもしれない他の関連するもの:
>>> Path('/var/log/system.log').parent
Path('/var/log')
>>> Path('/var/log/system.log').ancestor(2)
Path('/var')
>>> Path('/var/log/system.log').listdir()
[Path('/var/foo'), Path('/var/bar')]
>>> (Path('/var/log') + '/system.log').isfile()
True
Pipを使用してインストールできます。
$ pip3 install unipath
組み込みのpathlib
に似ています。違いは、すべてのパスを文字列として処理することです(Path
はstr
のサブクラスです)。そのため、一部の関数が文字列を想定している場合は、文字列に変換することなくPath
オブジェクトを簡単に渡すことができます。
たとえば、これはDjangoおよびsettings.py
でうまく機能します。
# settings.py
BASE_DIR = Path(__file__).ancestor(2)
STATIC_ROOT = BASE_DIR + '/tmp/static'