Utilisation des modules os et stat

Le module os permet d'interagir avec le système d'exploitation hôte sur lequel s'exécute l'environnement Python. Par exemple, il vous est possible de manipuler le système de fichiers du système d'exploitation. Dans ce cas, le module stat vous permettra d'obtenir des informations complémentaires sur les fichiers présents sur ce système de fichiers.

Exemple de code

#!/usr/bin/python3
			                    
import sys
import os
import stat

def getFilename( path ):
    lst = path.split( os.sep )
    return lst[ len( lst ) -1 ]

def displayFile( path, level ):
    st = os.stat( path )
    rights = ""
    if st.st_mode & stat.S_IFDIR: rights += "d"
    else: rights += "-" 
    if st.st_mode & stat.S_IRUSR: rights += "r"
    else: rights += "-" 
    if st.st_mode & stat.S_IWUSR: rights += "w"
    else: rights += "-" 
    if st.st_mode & stat.S_IXUSR: rights += "x"
    else: rights += "-" 
    
    size = st.st_size
    shortName = getFilename( path )
    
    print( "%s %9d %s%s" % (rights, size, level, shortName ) )

def scan( path, level = "" ):
    displayFile( path, level )
    try:
        files = os.listdir( path )
        for file in files:
            subPath = path + os.sep + file
            if os.path.isdir( subPath ):
                scan( subPath, level + "    " )
            else:
                displayFile( subPath, level + "    " )
    except:
        print( level + "    Access is denied !!!" )


if len( sys.argv ) == 2:
    folder = sys.argv[1]
else:
    folder = os.getcwd() 
    
folder = os.path.abspath( folder )    
if os.path.isdir( folder ) == False:
    print( "Not a folder: " + folder )
    exit()

scan( folder )

Pour lancer cet exemple, veuillez procéder ainsi :

$> python3 Listing.py folder
drwx      4096 folder
-rw-       835     Listing.py
-rwx      1359     Listing2.py
$>