« Petits exemples de code Python » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « == Script pour éviter le delog automatique et afficher l'heure == Souvent les connexions à la console ssh ont un time-out d'inactivité très (trop) court. Voici un petit programme python qui affiche l'heure au centre de l'écran et attends l'appuy sur une touche.<syntaxhighlight lang="python3"> #!/bin/python3 import time import sys import select import termios import tty import shutil # Obtenir la taille du terminal size = shutil.get_terminal_size() cols =... ») |
mAucun résumé des modifications |
||
| Ligne 51 : | Ligne 51 : | ||
</syntaxhighlight>Le script s'autoexplique. On utilise le module [[Python date et heure#Le module time|time]] el des [[ANSI|codes ansi]]. | </syntaxhighlight>Le script s'autoexplique. On utilise le module [[Python date et heure#Le module time|time]] el des [[ANSI|codes ansi]]. | ||
[[Fichier:Image-slock.png|sans_cadre|425x425px]] | |||
L'heure et la date s'affiche au milieu de l'écran avec le carret qui disparait. Si on tape une touche on remplace le texte jaune de la date par des espaces,le carret réapparait et le curseur revient là ou il était. | |||
Si il y avait du texte sous la date comme c'est le cas dans cet exemple il sera perdu et remplacé par des espaces. | |||
Version du 25 septembre 2025 à 08:49
Script pour éviter le delog automatique et afficher l'heure
Souvent les connexions à la console ssh ont un time-out d'inactivité très (trop) court.
Voici un petit programme python qui affiche l'heure au centre de l'écran et attends l'appuy sur une touche.
#!/bin/python3
import time
import sys
import select
import termios
import tty
import shutil
# Obtenir la taille du terminal
size = shutil.get_terminal_size()
cols = size.columns
rows = size.lines
# FORMAT
date_format="\u25C0 %Y-%m-%d %H:%M:%S \u25B6";
# Calcul de la chaine
ssize=len(time.strftime(date_format))
# Calculer la position centrale
center_x = (cols // 2)-(ssize//2)
center_y = rows // 2
# Sauvegarder les paramètres du terminal
fd = sys.stdin.fileno()
old_settings = termios.tcgetattr(fd)
tty.setcbreak(fd) # Mode caractère par caractère
print ("Sleep mode. Type any key to resume...")
print ("\033[?25l\033[s",end="") # on desactive l'affichage du "carret" du curseur et on sauve sa position
try:
print ("\033[?25l\033[s",end="")
while True:
if select.select([sys.stdin], [], [], 0)[0]: # Si une touche est pressée
break # on sort du 'while'
print(f"\033[{center_y};{center_x}H", end="")
now = time.time()
ts=time.localtime(now)
f=time.strftime("\033[103m\033[31m"+date_format+"\033[0m",ts)
print (f,end="",flush=True)
time.sleep(0.1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) # Restaurer terminal
print(f"\033[{center_y};{center_x}H"+" "*ssize, end="") # On se positionne au centre
print("\033[u\033[?25h", end="") # Restaurer position curseur et on affiche le carret
print("Sleep mode terminated")
Le script s'autoexplique. On utilise le module time el des codes ansi.
L'heure et la date s'affiche au milieu de l'écran avec le carret qui disparait. Si on tape une touche on remplace le texte jaune de la date par des espaces,le carret réapparait et le curseur revient là ou il était.
Si il y avait du texte sous la date comme c'est le cas dans cet exemple il sera perdu et remplacé par des espaces.