Cara mengidentifikasi apakah suatu file adalah file normal atau direktori yang menggunakan python

129

Bagaimana Anda memeriksa apakah suatu file adalah file normal atau direktori yang menggunakan python?

Keith Smiley
sumber

Jawaban:

36

Seperti jawaban lain katakan, os.path.isdir()dan os.path.isfile()apa yang Anda inginkan. Namun, Anda harus ingat bahwa ini bukan hanya dua kasus. Gunakan os.path.islink()untuk symlinks misalnya. Lebih jauh, ini semua kembali Falsejika file tidak ada, jadi Anda mungkin ingin memeriksanya os.path.exists()juga.

retracile
sumber
10

Python 3.4 diperkenalkan pada pathlibmodul ke dalam perpustakaan standar, yang menyediakan pendekatan berorientasi objek untuk jalur menangani filesystem. Metode yang relevan adalah .is_file()dan .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 juga tersedia di Python 2.7 melalui modul pathlib2 di PyPi.

joelostblom
sumber
7
import os

if os.path.isdir(d):
    print "dir"
else:
    print "file"
Dominic Rodger
sumber
2

os.path.isdir('string')
os.path.isfile('string')

erenon
sumber
2

coba ini:

import os.path
if os.path.isdir("path/to/your/file"):
    print "it's a directory"
else:
    print "it's a file"
uolot
sumber
-1

Jika Anda hanya melangkah melalui serangkaian direktori Anda mungkin lebih baik hanya mencoba os.chdirdan memberikan kesalahan / peringatan jika gagal:

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))
Philip Kearns
sumber