Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

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

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
#!/usr/bin/python3
            
import sys
import os
import stat


def get_filename(path):
    return path.split(os.sep)[-1]


def display_file(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
    short_name = get_filename(path)

    print("%s %9d %s%s" % (rights, size, level, short_name))


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


if len(sys.argv) == 2:
    folder = sys.argv[1]
else:
    folder = os.getcwd()

folder = os.path.abspath(folder)
if not os.path.isdir(folder):
    print("Not a folder: " + folder)
    exit()

scan(folder)
Fichier listing.py : affiche récursivement le contenu d'un dossier

Pour lancer cet exemple, veuillez procéder ainsi :

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