#1 Le 12/07/2021, à 17:40
- kholo
[script python] recherche de fichiers dans nautilus (nautilus script)
CHERCHER_ICI
je ne suis pas fan de la recherche avec Ctrl + F de nautilus...
je me suis donc fait un script pour me simplifier les recherches
sans avoir à passer en ligne de commande
pour le moteur, j'ai finalement utilisé find dans un subprocess.Popen
glob ou walk étant trop pénible à utiliser dans mon cas
chercher_ici est un script prévu pour fonctionner en tant que nautilus script
il est à placer dans le dossier :
/home/USER/.local/share/nautilus/scripts
soit :
~/.local/share/nautilus/scripts
il recherche des fichiers et des dossiers depuis un répertoire
en choisissant un dossier ou un fichier
la recherche se focalise sur le dernier niveau de l'arborescence
que ce soit un fichier ou un dossier qui le soit
rechercher machin trouvera
/chemin/vers/machin ou /chemin/vers/machin.ext
mais pas
/chemin/vers/machin/truc ni /chemin/vers/machin/truc.ext
les recherches se font sans distinction de casse
si vous choisissez un dossier, la recherche se fera dans ce dossier
si vous choisissez un fichier, la recherche se fera à partir du dossier contenant ce fichier
le choix par défaut est contenant le motif de recherche, c'est à dire *recherche*
les autres possibilités sont
exact , c'est à dire recherche
commence par, c'est à dire recherche*
fini par, c'est à dire *recherche
dans la fenêtre des éléments trouvés, seuls les noms sont marqués
mais le chemin complet est indiqué en bas si on clic sur un élément
raccourcis clavier :
ctrl + q ou touche échappe pour quitter
double clic sur un élément pour ouvrir nautilus à l'emplacement du fichier ou du dossier
pour l'utiliser, faites un clic droit sur un fichier ou un dossier
allez dans le choix "Scripts"
puis chercher_ici (ou un autre nom si vous avez changer le nom)
le focus est sur le entry, tapez votre recherche
tabulation permet de passer d'une option à une autre
le choix entre recherche exacte, commence par, fini par et contient,
se fait avec la barre d'espace quand le focus est sur le choix avec la touche Tab
quelque soit l'emplacement la touche Entrée valide la recherche
après un clic sur un des éléments, un double clic sur celui ci
ou un clic sur le bouton voir ouvre le fichier ou le dossier en sélectionné dans nautilus
procédure d'installation fécomsa :
pour ceux qui ne codent pas on installe quelques dépendances :
certaines sont indispensable, d'autres non... alors je met ce qu'il faut et même un peu plus...
sudo apt install python-is-python3
sudo apt install python3-tk
sudo apt install python3-pip
ces dépendances devraient être déjà installées (donc rien à faire ici):
sys getopt os re fnmatch subprocess time
on crée le script :
touch ~/.local/share/nautilus/scripts/chercher_ici
on lui donne les droits d’exécution
chmod +x ~/.local/share/nautilus/scripts/chercher_ici
on édite
gedit ~/.local/share/nautilus/scripts/chercher_ici
(je sais, j'aurais pu commencer par cela et gagner une commande !! )
on colle le code
#!/usr/bin/env python3
# -*- coding: UTF8 -*-
"""
CHERCHER_ICI
je ne suis pas fan de la recherche avec Ctrl + F de nautilus...
je me suis donc fait un script pour me simplifier les recherches
sans avoir à passer en ligne de commande
pour le moteur, j'ai finalement utilisé find dans un subprocess.Popen
glob ou walk étant trop pénible à utiliser dans mon cas
chercher_ici est un script prévu pour fonctionner en tant que nautilus script
il est à placer dans le dossier :
/home/USER/.local/share/nautilus/scripts
soit :
~/.local/share/nautilus/scripts
il recherche des fichiers et des dossiers depuis un répertoire
en choisissant un dossier ou un fichier
la recherche se focalise sur le dernier niveau de l'arborescence
que ce soit un fichier ou un dossier qui le soit
rechercher machin trouvera
/chemin/vers/machin
ou
/chemin/vers/machin.ext
mais pas
/chemin/vers/machin/truc
ni
/chemin/vers/machin/truc.ext
les recherches se font sans distinction de casse
si vous choisissez un dossier, la recherche se fera dans ce dossier
si vous choisissez un fichier, la recherche se fera à partir du dossier contenant ce fichier
le choix par défaut est contenant le motif de recherche, c'est à dire *recherche*
les autres possibilités sont
exact , c'est à dire recherche
commence par, c'est à dire recherche*
fini par, c'est à dire *recherche
dans la fenêtre des éléments trouvés, seuls les noms sont marqués
mais le chemin complet est indiqué si on clic sur un élément
raccourcis clavier :
ctrl + q ou touche échappe pour quitter
double clic sur un élément pour ouvrir nautilus à l'emplacement du fichier ou du dossier
pour l'utiliser, faites un clic droit sur un fichier ou un dossier
allez dans le choix "Scripts"
puis chercher_ici (ou un autre nom si vous avez changer le nom)
le focus est sur le entry, tapez votre recherche
tabulation permet de passer d'une option à une autre
le choix entre recherche exacte, commence par, fini par et contient,
se fait avec la barre d'espace quand le focus est sur le choix avec la touche Tab
quelque soit l'emplacement la touche Entrée valide la recherche
après un clic sur un des éléments, un double clic sur celui ci
ou un clic sur le bouton voir ouvre le fichier ou le dossier en sélectionné dans nautilus
"""
__title__ = "Ki chercher fichiers ou dossiers"
__author__ = 'Ury Cyril : kholo'
__license__ = 'cc'
__copyright__ = 'Creative Common 2015-2021'
__ver_major__ = 0
__ver_minor__ = 1
__ver_patch__ = 0
__ver_sub__ = ''
__version__ = "%d.%d.%d%s" % (__ver_major__, __ver_minor__,
__ver_patch__, __ver_sub__)
import tkinter as tk
import sys, getopt, os
import re
import fnmatch
import subprocess
__DEBUG__ = False # active ou désactive l'écriture du log
# __DEBUG__ = True
def ecriture(donnees, *autres):
""" permet d'écrire un log dans tmp ou shm qui est un dossier en Ram d'Ubuntu
le log disparaitra au prochain démarrage de Ubuntu """
if __DEBUG__:
# un_fichier = "/tmp/out.log"
un_fichier = "/dev/shm/chercher_ici.log"
with open(un_fichier,'a') as f:
f.write(str(donnees) + '\n')
if autres :
f.write(str(autres) + '\n')
import time
ecriture(30*'-')
ecriture(time.time())
def rechercher(path: str, glob_pat: str, ignore_case: bool = False, is_recursive: bool = False):
""" le moteur de recherche """
liste = []
cmd = ["find", path, "-iname", glob_pat]
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True)
# output = process.stdout.readline()
# print("output", output)
# ecriture(output)
""" déroulement de la recherche """
# TODO ça doit pouvoir s'interrompre si trop long
while True:
output = process.stdout.readline()
if output == '' and process.poll() != None:
break
if output:
liste.append(output.strip())
du_texte = output.strip()
ecriture("=>", du_texte)
# TODO finir gestion des erreurs
# """ pour la gestion des erreurs """
rc = process.poll() # TODO : utile ?
# output, errors = process.communicate()
return liste
def open_file(path):
""" ouvre dossier dans Nautilus et sélectionne l'élément"""
# subprocess.Popen(["xdg-open", path])
subprocess.Popen(["nautilus", path])
class ScrolledListBox(tk.Frame):
""" ajoute les scrolls H ert V à un listbox"""
def __init__(self, parent, liste=[], *args, **kargs):
super().__init__(parent, *args, **kargs)
self.parent = parent
self.scrollbarV = tk.Scrollbar(self, orient='vertical')
self.scrollbarH = tk.Scrollbar(self, orient='horizontal')
self.listbox = MaListeBox(self)
self.listbox.insert_liste(tk.END, liste)
self.listbox.config(yscrollcommand = self.scrollbarV.set)
self.scrollbarV.config(command = self.listbox.yview)
self.listbox.config(xscrollcommand = self.scrollbarH.set)
self.scrollbarH.config(command = self.listbox.xview)
self.listbox.grid(row=0, column=0, sticky="news")
self.scrollbarV.grid(row=0, column=1, sticky="ns")
self.scrollbarH.grid(row=1, column=0, sticky="ew")
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
class MaListeBox(tk.Listbox):
""" listbox avec méthode d'ajout, de vidage, de sélection """
def __init__(self, parent, *args, **kargs):
super().__init__(parent, *args, **kargs)
self.parent = parent
self.list_items = {} # liste des éléments
# **************************************
""" remplir listbox en démonstration """
# self.fill() # POUR DEMO
# **************************************
""" DND dans l'objet """
self.select = -1
self.over = -1
self.bind('<Button-1>', self.selection)
self.bind('<Double-1>', self.voir)
# **************************************
def voir(self, *event):
""" process pour ouvrir un élément de la liste dans nautilus """
ecriture("je suis dans voir de la listbox")
self.parent.parent.infosbar.voir()
def selection(self, *event):
""" sélection d'un élément de la liste """
ecriture("je suis dans selection de la listbox")
if isinstance(event, tuple):
event = event[0]
current = self.nearest(event.y)
if current != -1:
self.select = current
else:
self.select = -1
if self.select != -1:
""" affiche le chemin complet dans la barre d'info """
self.parent.parent.infosbar.texte.set(self.list_items[self.select]["realpath"])
def vider(self):
""" vider la listbox """
self.delete(0,tk.END)
# **************************************
def fill(self, number=15):
""" DEMO : rempli la listbox avec des nombres """
for i in range(number):
self.insert_element(tk.END, i)
def insert_element(self, place, media):
""" insert un élement dans la listbox à une place donnée """
nombre = len(self.get(0, tk.END))
if isinstance(media, int) : # POUR TESTS avec fill()
media = "/pour/test/" + str(nombre)
if isinstance(place, int) :
if place <= nombre:
self.items[place] = {"label" : media.split('/')[-1], "realpath" : media}
else :
ecriture("y en a ", nombre, "dans la listbox")
self.list_items[nombre] = {"label" : media.split('/')[-1], "realpath" : media}
self.insert(place, media.split('/')[-1])
def insert_liste(self, place, liste):
""" insert une liste dans la listbox par élément """
for element in liste:
self.insert_element(place, element)
class AfficheInfos(tk.Frame):
""" barre d'info pour mettre en bas d'une fenêtre """
def __init__(self, parent, *args, **kargs):
super().__init__(parent, *args, **kargs)
self.parent = parent
self.texte = tk.StringVar()
self.texte.set("choisissez un élément")
self.bouton = tk.Button(self, text="voir", command=self.voir)
self.bouton.grid(row=0, column=0, sticky='nws')
self.label = tk.Label(self, textvariable=self.texte, width=100)
self.label.grid(row=0, column=1, sticky='nws')
self.grid_columnconfigure(0, weight=1)
self.grid_columnconfigure(1, weight=10)
self.grid_rowconfigure(0, weight=1)
def affiche_infos(self, texte):
""" affiche un texte dans la barre d'info """
ecriture("AfficheInfos dans affiche_infos", texte)
self.texte.set(texte)
def voir(self):
""" ouvrir nautilus et sélectionner le fichier """
place = self.parent.listbox.listbox.select
fichier = self.parent.listbox.listbox.list_items[place]
path = fichier["realpath"]
open_file(path)
class FenetreAffichageFichiers(tk.Toplevel):
""" fenêtre pour afficher des éléments dossiers ou fichier dans une listbox """
def __init__(self, parent=None, liste=[], *args, **kargs):
super().__init__(parent, *args, **kargs)
self.parent = parent
self.geometry("1000x450+100+300")
self.title("Ouvrir dossiers des résultats")
self.listbox = ScrolledListBox(self, liste)
self.listbox.grid(row=0, column=0, sticky='news')
self.infosbar = AfficheInfos(self)
self.infosbar.grid(row=1, column=0, sticky='news', columnspan=2)
# ******************************
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
# self.grid_rowconfigure(1, weight=1)
# self.grid_rowconfigure(2, weight=1)
self.bind('<Control-q>', self.quitter)
self.bind('<Escape>', self.quitter)
""" pour sauver la config lorsqu'on clic sur la croix
shunt la procédure de fermeture pour en refaire une autre """
self.protocol("WM_DELETE_WINDOW", self.close_window)
# TODO sauvegarde des préférences
self.mainloop()
# ******************************
""" deux méthodes pour gestion selon le type de fermeture """
## sans doute inutile...
def close_window(self, *event):
""" procédure de fermeture avec sauvegarde de la configuration """
self.quit()
def quitter(self, *event):
""" pour choper l'extinction et lancer le close_window"""
self.close_window()
class FenetreChoix(tk.Tk):
""" fenêtre pour choisir le motif de recerche et le type de recherche """
def __init__(self, parent=None, *args, **kargs):
super().__init__(parent, *args, **kargs)
self.parent = parent
self.geometry("500x300+100+300")
# ******************************
self.choix = "*" # par défaut : tout !
self.recherche = tk.StringVar()
self.entry = tk.Entry(self, textvariable=self.recherche)
self.entry.grid(row=0, column=0, sticky="ew")
self.frame_choix = tk.Frame(self)
self.frame_choix.grid(row=1, column=0, sticky='news')
vals = ['A', 'B', 'C', 'D']
etiqs = ['recherche exacte', 'commence par', 'fini par', 'contient']
self.varGr = tk.StringVar()
self.varGr.set(vals[3]) # choix du type de recherche par défaut : contient
for i in range(4):
b = tk.Radiobutton(self.frame_choix, variable=self.varGr, text=etiqs[i], value=vals[i])
b.grid(row=i, column=0, sticky="nw")
self.btn_lancer = tk.Button(self, text="lancer", command=self.lancer_rch)
self.btn_lancer.grid(row=2, column=0)
self.entry.focus_set() # on passe le focus sur le entry par défaut
# ******************************
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
self.grid_rowconfigure(1, weight=1)
self.grid_rowconfigure(2, weight=1)
self.bind('<Control-q>', self.quitter)
self.bind('<Return>', self.lancer_rch)
self.bind('<Escape>', self.quitter)
""" pour sauver la config lorsqu'on clic sur la croix
shunt la procédure de fermeture pour en refaire une autre """
self.protocol("WM_DELETE_WINDOW", self.close_window)
self.mainloop()
# ******************************
def __str__(self):
return self.choix
def lancer_rch(self, *event):
""" adapte le motif de recherche """
self.choix = '*'
entry = self.recherche.get()
bouton = self.varGr.get()
if entry == "":
self.choix = '*'
elif bouton == 'A': # 'recherche exacte'
self.choix = entry
elif bouton == 'B': # 'commence par'
if not '*' in entry:
self.choix = entry + '*'
else :
self.choix = entry
elif bouton == 'C': # 'fini par'
if not '*' in entry:
self.choix = '*' + entry
else :
self.choix = entry
elif bouton == 'D': # 'contient'
if not '*' in entry:
self.choix = '*' + entry + '*'
else :
self.choix = entry
self.withdraw() # cache la fenêtre à l'ouverture de la prochaine en toplevel
self.quitter()
# ******************************
def close_window(self, *event):
""" procédure de fermeture avec sauvegarde de la configuration """
self.quit()
def quitter(self, *event):
""" pour choper l'extinction et lancer le close_window"""
self.close_window()
# sys.exit(123)
# *************************************************************
ecriture("on entre dans partie A")
dossiers = None
current_dir = os.getcwd()
arguments = [current_dir + '/' + x for x in sys.argv[1:] if os.path.isdir(current_dir + '/' + x)]
texte = "le dossier courant est " + current_dir + '\n'
ecriture(texte)
texte = "les arguments sont " + str(arguments) + '\n'
ecriture(texte)
if len(arguments) == 0:
arguments = [current_dir]
ecriture("arguments rectifiés : ", arguments)
choix = FenetreChoix()
ecriture("le choix est", choix.choix)
# *************************************************************
ecriture("on entre dans partie B")
# sys.exit(123)
# plus tard peut être gestion de plusieurs critères de recherche
for un_argument in arguments:
fichiers_trouves = rechercher(un_argument, choix.choix, True, True)
ecriture(20*'+')
ecriture("on entre dans la partie d'affichage")
mon_affichage = FenetreAffichageFichiers(liste=fichiers_trouves)
choix.quitter() # juste pour être certain
on enregistre et on ferme avec Ctrl + S puis Ctrl + Q
Utilisation
allez dans un dossier, sélectionnez un fichier ou un dossier puis clic drit "Scripts" et "chercher_ici"
le reste est expliqué en haut...
je ferai certainement évoluer ce script
Hors ligne
#2 Le 12/07/2021, à 20:01
- Vobul
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
Salut,
Quelques remarques :
* Je m'attendais à un repo git, pas un truc dans une balise code d'un forum, je t'invite fortement à mettre ton code sur une forge de ton choix, avec un README et des screenshots
* Une licence GPL serait plus appropriée
* J'ai une forte aversion pour le code écrit dans une langue autre que l'anglais, mais bon chacun fait comme il veut hein y'a des commentaires, c'est déjà pas mal ! Bon par contre pour le choix des noms de variables on repassera. "un_fichier" devrait être plutôt nommé "fichier_log" voire "logfile" en anglais.
* As-tu considéré l'usage de "locate" (paquet mlocate) au lieu de find ? Sachant que find va parcourir le système de fichier alors que locate utilise une base indexée et sera beaucoup, beaucoup plus rapide
* Fais un coup de "black" et de "isort", ça fait toujours du bien
* Pourquoi écrire le fichier de log dans /dev/shm ? Utilise plutôt /tmp, voir question sur so, et fais un dossier temporaire plutôt que d'écrire dans /tmp direct, et nomme le fichier "chercher_ici.log" (ou le dossier temporaire chercher_ici-1234Z) plutôt que out.log.
Enfin bon après j'ai pas tout regardé car sans la coloration syntaxique ça pique un peu de scroller sur un forum phpbb quand même
Sinon bravo pour avoir écrit tout ça et surtout pour le partager (avec les moyens du bord), peu de gens seraient prêts à faire de même et à s'ouvrir aux critiques (comme moi) !
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#3 Le 12/07/2021, à 23:09
- kholo
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
salut Vobul...
merci pour ce retour... très constructif...
la raison pour laquelle je met ça ici est que j'ai conscience que c'est très spécifique entre Linux, Nautilus et les nautilus scripts...
je fais pas mal de tutos pour les utilisateurs Ubuntu. Je restreins par facilité... je dois pouvoir améliorer ça facilement...
pour le git, il faut que je me fasse violence à m'y mettre mais je craint toujours de ne pas arriver à suivre les requêtes et les pull...
ici c'est plus calme
je vais changer la licence en effet... c'est une entête que je traîne depuis pas mal de temps et qu'il est temps que je mette à jour...
je versionne très mal mes projets aussi... encore un truc qu'il faut que je potasse...
pour locate, je lui reproche de devoir faire des mises à jour de la base difficile à tenir quand on a un système de fichiers qui change souvent comme je le fais... et j'ai jamais pris le temps de l'utiliser... mais ça reste à envisager...
pour l'anglais aussi...je code seul et partage assez peu mes codes... il vais reprendre ça...
pour les noms de variable, je me dois de voir cela aussi... même pour moi à la relecture, j'avoue que des fois je met du temps à me remettre dedans...
pour l'usage de shm, je fais ça un peu anarchiquement... avec les sdd, j'essaie d'éviter les écritures sur mon ssd... mais en prod, tmp voire un dossier dédié serait plus propre... je vais voir aussi cela... idem pour l'incrémentation auto du nom du log...
black et isort, je ne connaissais pas... je vais me rencarder....
pour la fin, merci pour le temps à la lecture et au débriefing...
j'apprends en partageant et ma meilleur récompense est de voir mon travail partagé... et critiqué...
watael ne me loupe pas quand je fais du bash... je dois être maso parce que j'adore
j'ai pas mal de choses que je partage très peu et je bosse souvent le nez dans le moteur sans travailler sur la carrosserie...
encore un truc qu'il est temps que je change...
je vais améliorer mon code de ce pas et partagerai mes prochaines versions autant ici que sur une forge...
encore merci pour tes observations et ton tact !!!
Hors ligne
#4 Le 13/07/2021, à 01:57
- Vobul
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
Si tu ne devais faire qu'une seule chose : apprendre et utiliser git ! C'est vraiment, vraiment top et un indispensable pour tout codeur qui se respecte !
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#5 Le 13/07/2021, à 17:46
- kholo
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
suite aux conseils de Vobul,
j'ai passé la licence en GNU,
j'ai traduit en anglais et ajouté une localisation, le français et l'anglais sont supportés
mis des noms de variables et de fonctions plus parlants et anglais
revue le log... indenté les versions de log... pour le moment, par défaut, je suis toujours dans shm
black n'a pas apporté grand chose lors d'un test sur une des versions...
j'ai aussi pigé isort mais je n'ai pas beaucoup d'imports
je reverrai tout cela et mettrai un coup de pep8 plus tard...
ça commence à être un peut long mais tout est inclus dans un seul fichier...
et enfin j'ai tout mis sur mon github
il faudrait que j'ajoute une procédure d'installation pour la simplifier et traduire l'accès dans les scripts...
mais voilà
à suivre...
Hors ligne
#6 Le 14/07/2021, à 01:46
- Vobul
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
Bravo !
Quelques petites remarques :
Je n'utiliserai pas __DEBUG__ ou __lang__ mais DEBUG ou LANG plutôt, le dunder (double underscore) c'est à utiliser pour d'autres choses IMHO.
Ligne 129 au lieu de "retour" comme nom de variable, utilise "translated_text"
Ligne 132 c'est "translated" qu'il faut mettre
Typo ligne 395 dans exactly
Maintenant que tu utilises git tu peux supprimer tout le code commenté, il restera dans ton historique si besoin. Si tu veux conserver une trace d'une idée, ajoute un vrai commentaire qui explique le pourquoi du comment ou les différentes options possibles.
Ligne 141, utilise une constante au début du fichier qui indique où sauver le logfile : LOGFILE_PATH, comme ça tu peux changer ça facilement. Aussi, "from pathlib import Path" tu verras c'est le bien (pas forcément super utile quand on ne vise que gnu/linux mais autant prendre les bonnes habitudes).
Pour la traduction c'est top mais ça ne va pas bien "scale". Après c'est pas vraiment une priorité non plus mais à garder en tête : avoir des fichier séparés par langue dans un sous-dossier "i18n" ou "locales" ou "langs". Voir même utilise gettext. Ce qui te permettra de déléguer la traduction à gettext qui sait très bien faire ça.
Le texte du début c'est bien pour le forum, mais il devrait plutôt être traduit et mis dans le README plutôt que dans le fichier en lui-même.
Bon j'ai juste parcouru vite fait, en plus je n'utilise ni ubuntu ni nautilus donc je ne peux pas vraiment essayer ton truc mais je trouve ça cool que tu prennes en compte mes remarques et que tu améliores ton script ! :]
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#7 Le 14/07/2021, à 11:21
- kholo
Re : [script python] recherche de fichiers dans nautilus (nautilus script)
Bravo !
Quelques petites remarques :
ouiiiiii !!!
Je n'utiliserai pas __DEBUG__ ou __lang__ mais DEBUG ou LANG plutôt, le dunder (double underscore) c'est à utiliser pour d'autres choses IMHO.
ok... et oui, la casse unifiée est plus logique...
Ligne 129 au lieu de "retour" comme nom de variable, utilise "translated_text"
d'acc... plus représentatif...
Ligne 132 c'est "translated" qu'il faut mettre
je me suis bien fait rire là !!!
Typo ligne 395 dans exactly
je vais relire... il doit en rester
Maintenant que tu utilises git tu peux supprimer tout le code commenté, il restera dans ton historique si besoin. Si tu veux conserver une trace d'une idée, ajoute un vrai commentaire qui explique le pourquoi du comment ou les différentes options possibles.
là, j'ai un peu de mal encore à savoir quand c'est trop ou trop peu !!! manque d'expérience... ça va venir...
Ligne 141, utilise une constante au début du fichier qui indique où sauver le logfile : LOGFILE_PATH, comme ça tu peux changer ça facilement.
oui... et il faut que je gère un vrai rotate qui vire les fichiers trop anciens... d'autant plus si ils sont ailleurs que dans shm...
Aussi, "from pathlib import Path" tu verras c'est le bien (pas forcément super utile quand on ne vise que gnu/linux mais autant prendre les bonnes habitudes).
ah ok... et avoir des objets Path en lieu et place des chemins si je comprends bien... je vais voir ça...
Pour la traduction c'est top mais ça ne va pas bien "scale". Après c'est pas vraiment une priorité non plus mais à garder en tête : avoir des fichier séparés par langue dans un sous-dossier "i18n" ou "locales" ou "langs". Voir même utilise gettext. Ce qui te permettra de déléguer la traduction à gettext qui sait très bien faire ça.
oui... j'étais resté sur mon idée de dico pour n'avoir qu'un seul fichier qui contienne tout...
je vais tester pour mettre en œuvre et maîtriser l'utilisation des locales...
Le texte du début c'est bien pour le forum, mais il devrait plutôt être traduit et mis dans le README plutôt que dans le fichier en lui-même.
oui... j'ai repris et traduit dans le README donc ça n'a plus lieu d'être en effet... c'était toujours dans mon idée d'avoir tout dans un seul fichier.
Bon j'ai juste parcouru vite fait, en plus je n'utilise ni ubuntu ni nautilus donc je ne peux pas vraiment essayer ton truc mais je trouve ça cool que tu prennes en compte mes remarques et que tu améliores ton script ! :]
je vais aussi potasser le côté sous dossier pour mettre un peu tout ça plus propre et plus simple...
juste que je voulais éviter de polluer le dossier des nautilus scripts avec un dossier du programme... à voir...
tu m'auras bien boosté et aidé à améliorer rapidement... encore merci pour tes conseils
Hors ligne