web-dev-qa-db-ja.com

Pythonにディレクトリが存在するかどうかを調べる方法

Pythonのosモジュールには、ディレクトリが存在するかどうかを調べる方法があります。

>>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode
True/False
930
David542

ファイルかディレクトリかにかかわらず、 os.path.isdir 、または os.path.exists を探しています。

例:

import os
print(os.path.isdir("/home/el"))
print(os.path.exists("/home/el/myfile.txt"))
1456
phihag

とても近い!現在存在するディレクトリの名前を渡すと、os.path.isdirTrueを返します。存在しない場合、またはディレクトリでない場合は、Falseが返されます。

66
Kirk Strauser

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モジュールからも入手できます。

34
joelostblom

はい、 os.path.exists() を使用してください。

33
aganders3

2内蔵機能で確認できます

os.path.isdir("directory")

指定されたディレクトリが利用可能であることをブール値のtrueにします。

os.path.exists("directoryorfile")

指定されたディレクトリまたはファイルが利用可能であれば、それは真偽値を真にします。

パスがディレクトリかどうかを確認します。

os.path.isdir("directorypath")

パスがディレクトリの場合はブール値のtrueを返します。

16
Vivek Ananthan

はい os.path.isdir(path) を使用

16
RanRag

のように:

In [3]: os.path.exists('/d/temp')
Out[3]: True

確かにos.path.isdir(...)を投げ入れるのでしょう。

10
AlG

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
8
Tyler A.

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は例外をスローします。

7
dputros
#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')
5
JoboFive

便利な 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に似ています。違いは、すべてのパスを文字列として処理することです(Pathstrのサブクラスです)。そのため、一部の関数が文字列を想定している場合は、文字列に変換することなくPathオブジェクトを簡単に渡すことができます。

たとえば、これはDjangoおよびsettings.pyでうまく機能します。

# settings.py
BASE_DIR = Path(__file__).ancestor(2)
STATIC_ROOT = BASE_DIR + '/tmp/static'
2
Max Malysh