Python 我不知道';我不知道django为什么这么做,这是关于os.stat的

Python 我不知道';我不知道django为什么这么做,这是关于os.stat的,python,Python,这样做的好处是什么: import os ST_MODE = 0 ST_INO = 1 ST_DEV = 2 ST_NLINK = 3 ST_UID = 4 ST_GID = 5 ST_SIZE = 6 ST_ATIME = 7 ST_MTIME = 8 ST_CTIME = 9 # Extract bits from the mode def S_IMODE(mode): return mode & 07777 def S_IFMT(mode):

这样做的好处是什么:

import os
ST_MODE  = 0
ST_INO   = 1
ST_DEV   = 2
ST_NLINK = 3
ST_UID   = 4
ST_GID   = 5
ST_SIZE  = 6
ST_ATIME = 7
ST_MTIME = 8
ST_CTIME = 9

# Extract bits from the mode

def S_IMODE(mode):
    return mode & 07777

def S_IFMT(mode):
    return mode & 0170000

# Constants used as S_IFMT() for various file types
# (not all are implemented on all systems)

S_IFDIR  = 0040000
S_IFCHR  = 0020000
S_IFBLK  = 0060000
S_IFREG  = 0100000
S_IFIFO  = 0010000
S_IFLNK  = 0120000
S_IFSOCK = 0140000

# Functions to test for each file type

def S_ISDIR(mode):
    return S_IFMT(mode) == S_IFDIR
def isdir(path):
    """Test whether a path is a directory"""
    try:
        st = os.stat(path)
    except os.error:
        return False
    return S_ISDIR(st.st_mode)#this code ,why

谢谢

有什么好处吗?我想其中一个(否定的)是阻止代码尝试将目录作为常规文件处理。如果运行以下代码:

myprog *
shell将把
*
更改为当前目录中所有文件(包括子目录、管道、设备节点和各种其他特殊文件)的列表,相当于:

myprog mydir1 mydir2 myfile1.jpg myfile2.txt mynamedpipe1
测试其中一个参数是否为非常规文件对于确保只处理所需的文件类型至关重要。例如,您不希望打开管道文件进行输入和读取,直到文件结束,因为只有当管道的另一端将其关闭时,才会出现文件结束。看起来你的程序已经冻结了

另一种可能性(肯定的)是确保程序期望的目录(例如临时目录或配置文件目录)实际上是一个目录

这是因为UNIX的理念——一切都是一个文件,如果您只需要某些类型的文件,您必须自己过滤它们

其工作方式是,
stat
返回关于文件的各种精彩信息,其中一条信息是文件的模式。在此模式下,某些位被设置为指示文件的类型


S_ISDIR函数测试表示文件是目录的特定位组合,在这种情况下返回true。如果这些位未设置为指示目录或文件不存在,则返回false。

您的问题是什么?这和Django有什么关系?