python et les fichiers¶
Lecture d’un fichier¶
with open('test.txt') as f:
for l in f.readlines():
print(l)
Recherche et sauvegarde d’un élément dans un fichier¶
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
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¶
import os
os.listdir('c:/python24')
liste des fichiers (adresse complète) dans un répertoire¶
import glob
glob.glob('c:/python24/*')
est-ce un fichier? taille d’un fichier? supprimer un fichier?¶
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.
lister les fichiers¶
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
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¶
import os
statinfo = os.stat('somefile.txt')
print statinfo
print statinfo.st_size
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
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)