Как определить, является ли файл обычным файлом или каталогом, использующим python - PullRequest
115 голосов
/ 05 июня 2009

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

Ответы [ 7 ]

151 голосов
/ 05 июня 2009

os.path.isdir() и os.path.isfile() должны дать вам то, что вы хотите. Увидеть: http://docs.python.org/library/os.path.html

33 голосов
/ 05 июня 2009

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

9 голосов
/ 05 июня 2009
import os

if os.path.isdir(d):
    print "dir"
else:
    print "file"
6 голосов
/ 28 мая 2017

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.

4 голосов
/ 05 июня 2009

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

import os.path
if os.path.isdir("path/to/your/file"):
    print "it's a directory"
else:
    print "it's a file"
3 голосов
/ 05 июня 2009

<code>os.path.isdir('string')
os.path.isfile('string')
0 голосов
/ 26 июля 2015

Если вы просто просматриваете набор каталогов, вам может быть лучше просто попробовать 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...