Le langage Python permet, bien naturellement, de manipuler des fichiers. Dans l'exemple proposé ci-dessous, nous allons générer un fichier texte contenant des données mises en forme dans un tableau (en mode console). Les colonnes sont dimmensionnées en fonction de la plus grande chaîne de caractères de chaque colonnes.
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 |
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys # Pour la ligne de titre columnNames = ( "Code", "First name", "Last name", "Email" ) # Le jeu de données à écrire dans le fichier spies = [ ( "007", "James", "Bond", "007@mi6.uk" ), ( "Treadstone", "Jason", "Bourne", "bourne@cia.us" ), ( "Bean", "Johnny", "English", "bean@mi0.uk" ) ] # On calcule la taille de la plus longue chaîne # de caractères pour chaque colonne du tableau. columnSizes = [ 0, 0, 0, 0 ] for column in range(4): maxSize = len( columnNames[column] ) for line in spies: maxSize = max( len( line[column] ), maxSize ) columnSizes[ column ] = maxSize # On prépare les formats des lignes utilisés pour écrire dans le fichier # calcule : +------------+------------+-----------+---------------+ separatorRow = "+%s+%s+%s+%s+" % ( "-" * ( columnSizes[0] + 2 ), "-" * ( columnSizes[1] + 2 ), "-" * ( columnSizes[2] + 2 ), "-" * ( columnSizes[3] + 2 ) ) # calcule : | %-10s | %-10s | %-9s | %13s | lineFormat = "| %%-%ds | %%-%ds | %%-%ds | %%%ds |" % \ ( columnSizes[0], columnSizes[1], columnSizes[2], columnSizes[3] ) # On génère notre fichier avec les données formatées try: # L'instruction with garantie la fermeture du fichier en fin de bloc with open( "spies.txt", "w" ) as spiesFile: print( separatorRow, file=spiesFile ) print( lineFormat % columnNames, file=spiesFile ) print( separatorRow, file=spiesFile ) for spy in spies: # spy correspond à un tuple de la liste spies # => on peut donc s'en servir avec l'opérateur de formatage print( lineFormat % spy, file=spiesFile ) print( separatorRow, file=spiesFile ) print( "File generated" ) except IOError as exception: print( "Cannot write data to file " + str(exception), file=sys.stderr ) |
Pour lancer cet exemple, veuillez procéder ainsi :
$> python3 ExportSpies.py +------------+------------+-----------+---------------+ | Code | First name | Last name | Email | +------------+------------+-----------+---------------+ | 007 | James | Bond | 007@mi6.uk | | Treadstone | Jason | Bourne | bourne@cia.us | | Bean | Johnny | English | bean@mi0.uk | +------------+------------+-----------+---------------+ $>
with
avec l'ouverture du fichier permet de garantir sa fermeture automatique en fin de bloc.
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 :