python et les fichiers ********************** Lecture d'un fichier ==================== .. code-block:: python with open('test.txt') as f: for l in f.readlines(): print(l) Recherche et sauvegarde d’un élément dans un fichier ==================================================== .. code-block:: python path = 'A2310245.RPE' fichier = open(path,'r') txt='' for i in fichier.readlines(): if i[0] == 'E': txt = txt + i[60:70] + '\n' result = open('result.txt','w') result.write(txt) result.close() fichier.close() ce code très simpliste permet: * ouvrir un fichier * pour chaque ligne vérifier que le premier élément est E * si oui récupère 10 caractères entre la position 60 et 70 * ouverture d'un fichier de sauvegarde * sauvegarde du résultat * fermeture des fichiers .. note:: On peut supprimer facilement les retours chariots avec la fonction txt=txt.rstrip() une écriture plus intuitive .. code-block:: python with open('A2310245.RPE', 'r') as f: txt = '\n'.join(f.readlines()) with open('result.txt', 'w' as f: f.write(txt) Liste des fichiers ================== liste des fichiers contenus dans un répertoire ----------------------------------------------- .. code-block:: python import os os.listdir('c:/python24') liste des fichiers (adresse complète) dans un répertoire ---------------------------------------------------------- .. code-block:: python import glob glob.glob('c:/python24/*') est-ce un fichier? taille d’un fichier? supprimer un fichier? ============================================================= .. code-block:: python os.path.isfile(path) os.path.getsize(path) os.remove(path) path des fichiers ================= Le module os.path propose plusieurs fonctions simples d’utilisation pour récupérer les parties d’un nom de fichier: * dirname(path): retourne le répertoire associé au path * basename(path): retourne le nom simple du fichier (extension comprise) * split(path): retourne le couple (répertoire, nom du fichier) * splitdrive(path): retourne le couple (lecteur, chemin du fichier sans le lecteur) * splitext(path): retourne le couple (chemin du fichier sans l’extension, extension) * splitunc(path): retourne le couple (unc, rest) où unc est du type \hostrépertoire partagé et rest le reste du path (cette fonction n’est valable que sous Windows) déplacer un fichier =================== * os.rename(src, dst) permet de renommer le fichier de chemin src en le fichier de chemin dst, le répertoire contenant le fichier de destination doit cependant déjà exister, une erreur étant sinon retournée. * os.renames(src, dst) permet de renommer le fichier src en dst tout en créant si nécessaire les répertoires contenant le fichier de destination. * Enfin shutil.move(src, dst) renomme exactement comme os.renames le fichier src en dst si le fichier de destination est sur le même système de fichiers. Autrement elle copie simplement src sur dst puis efface src Si le fichier de destination se trouve sur le même système de fichiers, vous pouvez utiliser aussi bien les fonctions os.rename, os.renames que shutil.move sinon préférez shutil.move, les 2 autres fonctions pouvant échouer à leur tâche. supprimer un fichier ==================== un fichier os.remove(src) un répertoire shutil.rmtree(src) lister les fichiers =================== .. code-block:: python import glob import os.path def listdirectory(path): fichier=[] l = glob.glob(path+'\\*') for i in l: if os.path.isdir(i): fichier.extend(listdirectory(i)) else: fichier.append(i) return fichier recherche d'un élément dans des fichiers contenus dans un répertoire .. code-block:: python import glob import os.path dir='C:/Users/f.aoustin.PROPLAST/Desktop/sylob' filter=['.cil',] search='activ' def listdirectory(path): fichier=[] l = glob.glob(path+'\\*') for i in l: if os.path.isdir(i): fichier.extend(listdirectory(i)) else: fichier.append(i) return fichier f = open('result','w') for i in listdirectory(dir): if os.path.splitext(i)[1] in filter: print 'SEARCH IN %s' % i lst = open(i,'r').readlines() txt = ''.join(lst) if search in txt: print 'FOUND IN %s ' % i f.write('%s\n' % i) f.close() information fichier =================== .. code-block:: python import os statinfo = os.stat('somefile.txt') print statinfo print statinfo.st_size .. code-block:: python import os.path, time print "last modified: %s" % time.ctime(os.path.getmtime(file)) print "created: %s" % time.ctime(os.path.getctime(file)) Supprimer les fichiers d'un certains âge ======================================== on sélectionne les fichiers de plus d'une minute .. code-block:: python import time import os seven_days_ago = time.time() - 60 folder = '/home/rv/Desktop/test' os.chdir(folder) for somefile in os.listdir('.'): st=os.stat(somefile) mtime=st.st_mtime if mtime < seven_days_ago: print('remove %s'%somefile)