Jak znaleźć czy katalog istnieje w Pythonie

W module os w Pythonie, czy istnieje sposób na znalezienie katalogu, coś w stylu:

>>> os.direxists(os.path.join(os.getcwd()), 'new_folder')) # in pseudocode
True/False
Author: Kasrâmvd, 2012-01-20

10 answers

Szukasz os.path.isdir, lub os.path.exists jeśli nie obchodzi cię, czy to plik, Czy katalog.

Przykład:

import os
print(os.path.isdir("/home/el"))
print(os.path.exists("/home/el/myfile.txt"))
 1232
Author: phihag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-26 13:32:41

Tak blisko! os.path.isdir zwraca True Jeśli podasz nazwę katalogu, który aktualnie istnieje. Jeśli nie istnieje lub nie jest katalogiem, to zwraca False.

 52
Author: Kirk Strauser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-19 21:08:08

Tak, użyj os.path.exists().

 29
Author: aganders3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-19 21:06:12

Python 3.4 wprowadził Moduł pathlib do biblioteki standardowej, który zapewnia obiektowe podejście do obsługi ścieżek systemu plików:

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 jest również dostępny w Pythonie 2.7 za pośrednictwem modułu pathlib2 na PyPi.

 20
Author: joelostblom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-28 14:12:20
 12
Author: RanRag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-19 21:08:15

Możemy sprawdzić za pomocą 2 wbudowanych funkcji

os.path.isdir("directory")

Da boolean true Podany katalog jest dostępny.

os.path.exists("directoryorfile")

Da boolead true, jeśli Podany katalog lub plik jest dostępny.

Aby sprawdzić, czy ścieżka jest katalogiem;

os.path.isdir("directorypath")

Da wartość logiczną true, jeśli ścieżka jest katalogiem

 8
Author: Vivek Ananthan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-26 13:44:15

Jak w:

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

Prawdopodobnie wrzucić os.path.isdir(...) dla pewności.

 7
Author: AlG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-19 21:07:31

System operacyjny zapewnia wiele z tych możliwości:

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 wyrzuci wyjątek, jeśli ścieżka wejściowa jest nieprawidłowa.

 3
Author: dputros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-04 22:14:40

Wystarczy podać os.stat wersję (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
 3
Author: Tyler A.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-08 23:14:36
#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')
 2
Author: JoboFive,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-12 03:17:28