Je travail a récrire une parie de mon projet RPI-QL, pour y inclure des templates.
Ce qui ne marche pas est ce que je tente de faire pour mes lignes de commandes
python rpiql.py -f "demo.rpiql" -v 'item1="demo":item2="ceci est un test de variable: trop long pour savoir non ?"'
Ce que je veux faire est que depuis cette commande, il traite -v comme tel, en gardant les guillemets et qui les séparer en valeurs, pour que si j’appel avec getValue("item1")
et bien j’obtiens « demo » comme résultat.
Le problème est que l’argument, une fois passé dans le script perd les guillemets ("), et cause ainsi un problème, car mon séparateur est « : » et ce caractère peut être utilisé dans une valeur, comme pour « item2 » dans ce démo.
ChatGPT arrive a séparer les valeurs, mais est incaapable de comprendre deux demandes pour régler mon problème;
- Comment garder mes guillemet pour déterminer la valeur au complet, car actuellement ils son supprimé par le paste de l’argument
- Comment ignorer le « : » présent dans une valeur
Au mieu j’obtient le item1, mais le item2 s’arrête après variable, à cause du « : » avec la solution chatGPT (avec qui je me suis enragé à faire comprendre durant des heures ce problème).
actuellement, mon code pour les argument est ceci;
# application
argv = sys.argv[1:]
opts, args = getopt.getopt(argv,"ha:f:v:")
help=False
for opt, arg in opts:
if opt == '-h':
help=True
print("*** Help for command parameters")
print("\t-f\t<filepath>\t\tLoading draw file\r\n\t--file\t<filepath>")
print("\t-v\t<id=\"value\":id=\"value\">\tReplace values of id in draw file\r\n\t--value\t<id=\"value\":id=\"value\">")
elif opt == '-f' or opt == "--file":
debug("*** Loading draw file " + arg)
drawFile=arg
elif opt == '-v' or opt == "--values":
debug("*** Loading draw values " + arg)
drawValues = arg
else:
#Determine parameters
debug()
et drawValues retourne
item1=demo:item2=ceci est un test de variable: trop long pour savoir non ?
au lieu de
item1="demo":item2="ceci est un test de variable: trop long pour savoir non ?"
Alors comment je corrige la situation pour obtenir ça ? Sans bien sur ajouter des \ devant les " dans la ligne de commande.
Idéalement je veux pouvoir définir des paramètres id=value:id2=value2 … et pour voir aller les chercher depuis getValue(idname) .