#1 Le 14/02/2015, à 18:32
- totola
[RÉSOLU] python: fonction avec argument
Bonjour,
tout d'abord merci car grâce à vous j'ai réussi à faire ce que je voulais!
Maintenant je suis dans la simplification et la réécriture de mon programme. Pour celà j'essaie de définir le maximum de fonctions.
J'aimerai donc définir une fonction avec le bout de code suivant avec comme argument un nombre (2 ici):
p2=poste2.get()
ConnecterSSH(str(2))
run("rm -r /home/{}".format(UserBureau + p2))
J'aimerai que ma fonction Effacer(numero) execute ce code simplement avec Effacer(2). Seulement je bloque...
Merci
Dernière modification par totola (Le 16/02/2015, à 14:53)
Hors ligne
#2 Le 14/02/2015, à 18:57
- pingouinux
Re : [RÉSOLU] python: fonction avec argument
Bonsoir,
Si j'ai bien compris
def Effacer(valeur) :
p2=poste2.get()
ConnecterSSH(str(valeur))
run("rm -r /home/{}".format(UserBureau + p2))
Hors ligne
#3 Le 14/02/2015, à 19:03
- totola
Re : [RÉSOLU] python: fonction avec argument
Oui, merci, ça j'arrive, mais j'aimerais aussi remplacer tous les autres 2, genre:
def Effacer(valeur) :
p"valeur"=poste"valeur".get()
ConnecterSSH(str(valeur))
run("rm -r /home/{}".format(UserBureau + p"valeur"))
C'est là où je bloque...
Merci
Hors ligne
#4 Le 14/02/2015, à 19:19
- pingouinux
Re : [RÉSOLU] python: fonction avec argument
À tester (exec est une commande potentiellement dangereuse) :
def Effacer(valeur) :
cmd='''p%d=poste%d.get()
ConnecterSSH(str(%d))
run("rm -r /home/{}".format(UserBureau + p%d))'''%((valeur,)*4)
exec(cmd)
Hors ligne
#5 Le 14/02/2015, à 19:26
- D@mien.
Re : [RÉSOLU] python: fonction avec argument
Salut
Et comme çà?
def Effacer(valeur) :
main = __import__('__main__')
klass = main.__dict__['post'+value]
value=main.__dict__["p"+valeur]=klass.get()
[...]
:wq!
Hors ligne
#6 Le 14/02/2015, à 19:41
- totola
Re : [RÉSOLU] python: fonction avec argument
Salut
Et comme çà?def Effacer(valeur) : main = __import__('__main__') klass = main.__dict__['post'+value] value=main.__dict__["p"+valeur]=klass.get() [...]
ça ne serait pas plutôt:
main = __import__('__main__')
klass = main.__dict__['poste'+str(valeur)]
value=main.__dict__["p"+str(valeur)]=klass.get()
Mais ça produit une erreur:
klass = main.__dict__['poste'+str(valeur)]
KeyError: 'poste1'
Hors ligne
#7 Le 14/02/2015, à 19:48
- totola
Re : [RÉSOLU] python: fonction avec argument
À tester (exec est une commande potentiellement dangereuse) :
def Effacer(valeur) : cmd='''p%d=poste%d.get() ConnecterSSH(str(%d)) run("rm -r /home/{}".format(UserBureau + p%d))'''%((valeur,)*4) exec(cmd)
Oui... j'ai une erreur avec la commande exec..
Hors ligne
#8 Le 14/02/2015, à 23:28
- D@mien.
Re : [RÉSOLU] python: fonction avec argument
Re
ça ne serait pas plutôt:
'
C'était qu'un exemple écrit par dessus la citation.
Par contre, on voit que mon python est rouillé, la fonction `globals()` est fait pour çà si l'objet se trouve dans le namespace
class abc1():
pass
abc2 = abc1()
abc3 = "une variable"
def abc4():
pass
def getobj(var):
print(globals()['ab'+var])
getobj('c1')
getobj('c2')
getobj('c3')
getobj('c4')
# <class 'test.test.abc1'>
# <test.test.abc1 object at 0x7f8164caf320>
# une variable
# <function abc4 at 0x7f8164d35d08>
:wq!
Hors ligne
#9 Le 15/02/2015, à 12:48
- totola
Re : [RÉSOLU] python: fonction avec argument
J'ai trouvé quelque chose qui me convient:
D'abord faire une liste:
poste = [Tk.Entry(..), Tk.Entry(...), ...]etc...
Puis ma fonction:
def effacer(num_poste):
bureau = "{0}{1}".format("UserBureau", poste[num_poste].get())
run("rm -r /home/{}".format(bureau))
Et voilà,
Merci à tous pour les pistes
Dernière modification par totola (Le 15/02/2015, à 12:49)
Hors ligne
#10 Le 16/02/2015, à 14:28
- totola
Re : [RÉSOLU] python: fonction avec argument
Re
Par contre, on voit que mon python est rouillé, la fonction `globals()` est fait pour çà si l'objet se trouve dans le namespace
class abc1(): pass abc2 = abc1() abc3 = "une variable" def abc4(): pass def getobj(var): print(globals()['ab'+var]) getobj('c1') getobj('c2') getobj('c3') getobj('c4') # <class 'test.test.abc1'> # <test.test.abc1 object at 0x7f8164caf320> # une variable # <function abc4 at 0x7f8164d35d08>
Salut,
En fait je n'ai pas bien compris ton exemple... Mais j'ai l'impression qu'il peut me servir pour ce que je veux faire:
J'ai une fonction qui ping une adresse ip et qui doit me renvoyer une valeur correspondante à une couleur (red ou green) en fonction de la réponse du ping
def execute(option,numero):
result = subprocess.call(['ping', option, '192.168.1.{}'.format(str(numero))])
if not result:
print("Address OK")
couleur1='green'
else:
print("Address KO")
couleur1='red'
OS = sys.platform
option = '-c 1' if OS != 'win32' else ''
execute(option,1)
ça marche mais j'aimerais maintenant que la variable se nommeen fonction de l'argument 'numero' du genre:
couleur+str(numero) = 'green'
Je n'arrive pas à comprendre ton exemple, mais j'ai l'impression qu'il doit le permettre...
Merci
Hors ligne
#11 Le 16/02/2015, à 14:52
- totola
Re : [RÉSOLU] python: fonction avec argument
Bon, de la même façon qu'avant, j'ai une liste avec les couleur = ['red','red,'red,...]
puis
def execute(option,numero):
...
if not result:
...
couleur[numero]='green'
else:
...
couleur[numero]='red'
...
Et voilà... Youpi
Hors ligne