Как определить, является ли файл обычным файлом или каталогом с помощью Python

129

Как с помощью Python проверить, является ли файл обычным файлом или каталогом?

Кит Смайли
источник

Ответы:

36

Как говорили другие ответы, os.path.isdir()и os.path.isfile()вы хотите. Однако нужно иметь в виду, что это не единственные два случая. Используйте, например, os.path.islink()для символических ссылок. Кроме того, все они возвращаются, Falseесли файл не существует, поэтому вы, вероятно, также захотите проверить os.path.exists().

retracile
источник
10

Python 3.4 вводится в pathlibмодуле в стандартную библиотеку, которая обеспечивает ориентированный подход объекта для обработки файловой системы путей. Соответствующие методы будут .is_file()и .is_dir():

In [1]: from pathlib import Path

In [2]: p = Path('/usr')

In [3]: p.is_file()
Out[3]: False

In [4]: p.is_dir()
Out[4]: True

In [5]: q = p / 'bin' / 'vim'

In [6]: q.is_file()
Out[6]: True

In [7]: q.is_dir()
Out[7]: False

Pathlib также доступен в Python 2.7 через модуль pathlib2 в PyPi.

joelostblom
источник
7
import os

if os.path.isdir(d):
    print "dir"
else:
    print "file"
Доминик Роджер
источник
2

попробуй это:

import os.path
if os.path.isdir("path/to/your/file"):
    print "it's a directory"
else:
    print "it's a file"
uolot
источник
-1

Если вы просто просматриваете набор каталогов, вам может быть лучше просто попытаться os.chdirвыдать ошибку / предупреждение, если это не удается:

import os,sys
for DirName in sys.argv[1:]:
    SaveDir = os.getcwd()
    try:
        os.chdir(DirName)
        print "Changed to "+DirName
        # Do some stuff here in the directory
        os.chdir(SaveDir)
    except:
        sys.stderr.write("%s: WARNING: Cannot change to %s\n" % (sys.argv[0],DirName))
Филип Кирнс
источник