Pas trop surprenant, vous êtes peu en mer avec ce projet. Cela nécessite de combiner Python, HTML et éventuellement CSS. "Chaque spectre est tiré d'une bibliothèque massive" - Je vais supposer dans cette réponse que vous avez tiré les spectres d'intérêt dans un répertoire local et que vous voulez les regarder dans une page web servie localement. Je vais aussi supposer que tous les fichiers png sont de la même taille.
Si cela est correct, ce que vous voulez, c'est de créer un fichier HTML simple qui fait référence à tous les fichiers png, en les plaçant dans un tableau simple. Pour ce faire, le code doit cd dans le répertoire avec les fichiers image, ouvrir un fichier de sortie nommé "index.html" (le nom est significatif), utiliser glob pour obtenir tous les noms des images de spectres, et faire une boucle sur le noms écrivant le html pour la page. Une fois que vous avez le fichier créé, vous pouvez le servir localement avec la commande de ligne de commande
python -m http.server 8000
Vous pouvez alors voir votre page en pointant le navigateur à http://localhost:8000
.
Voici un exemple mise en œuvre
from glob import glob
import os
def spectra_imgs(spectra_dir, sp_format):
'''Return an iterable with names of all the files in the spectra_dir
that match the name format sp_format.'''
for gl_name in glob(os.path.join(spectra_dir, sp_format)):
yield os.path.basename(gl_name)
def add_img(sp_img, side, outfile):
''' Add a table item to existing table.
sp_img is the filename of the image
side is "left" or "right"
outfile is an open file handle
Returns None
'''
if side == 'left':
outfile.write('<tr><td class="left_img"><img src="{0}" alt={0}></td>\n"'.format(sp_img))
elif side == 'right':
outfile.write('<td class="right_img"><img src="{0}" alt={0}></td></tr>\n"'.format(sp_img))
else:
raise ValueError("Side must be either left or right, not {0}".format(side))
def sides():
''' Return an iterator that supplies an infinite sequence of "left" and "right".'''
while True:
yield "left"
yield "right"
def write_prefix(outfile):
outfile.write(
'<!DOCTYPE html>\n'
'<html class="spectra_page" lang="en">\n'
'<head>\n'
'<meta charset="UTF-8"/>\n'
'<title>Spectra Comparison Page</title>\n'
'<style>\n'
'table { width: 100%; }\n'
'#left_img { align-items: center }\n'
'#right_img { align-items: center }\n'
'img { height:500px; width:500px }\n' # change to whatever size you want the images displayed at
'</style>\n'
'</head>\n'
'<body>\n')
def write_suffix(outfile):
outfile.write(
'</table>\n'
'</body>\n'
'</html>\n'
)
def write_spectra_page(spectra_dir):
''' Write an index.html file with all the spectra images shown. '''
with open(os.join(spectra_dir, "index.html")) as outfile:
write_prefix(outfile)
for side, sp_img in zip(sides, spectra_imgs(spectra_dir,'sp*.png'):
add_img(sp_img, side, outfile)
if side == "left":
# need to close the table row
outfile.write('</tr>\n')
write_suffix(outfile)
https://i.stack.imgur.com/dmOz5.png Voici l'attachement désolé. – l1ve4science