Re: [Python-es] Editar variables en aplicaciones de consola
El 18 de agosto de 2014, 1:08, kausdiv kaus...@gmail.com escribió: Magistral, Chema. Mucho mejor que lo que yo usaba. Por cierto como haces tu para editar en aplicaciones de consola ? No suelo necesitarlo, pero dejaría que las tareas de edición las hagan los editores (vim/emacs/nano...notepad...st2). Crea un fichero temporal, añade el texto, y ábrelo con el editor por defecto que tenga el sistema: import os import subprocess import tempfile def editar(texto): with tempfile.NamedTemporaryFile(mode=w+,suffix='.txt',delete=False) as fp: fp.write(texto) filename = fp.name if os.name==nt: subprocess.call(notepad +filename) elif os.name == posix: editor = os.getenv('EDITOR') if not editor: editor = editor # normalmente un alias del editor 'nano' subprocess.call(editor + ' ' + filename) with open(filename) as fp: res = fp.read() os.remove(filename) return res texto = editar(Hello world!) print(texto) saludos. El 18/08/2014 0:16, Chema Cortes escribió: El 17 de agosto de 2014, 19:45, kausdiv kaus...@gmail.com escribió: Hola. Estoy haciendo varias aplicaciones/utilidades de consola que necesito. La cuestión es que no conozco ninguna forma de editar una variable, con raw_input se introduce nueva.. en fin he recurrido a Tkinter. Pero me parece una tremenda chapuza lo que he hecho: --codigo chapuza-- from Tkinter import * global T global sArgumentos root = Tk() T = Text(root, height=4, width=60) T.pack() sArgumentos = def click(): Debe lanzarse en el click de Aceptar global T global sArgumentos sArgumentos = T.get('1.0', 'end').strip() root.destroy() def editar(argumentos): Edita los argumentos y el resultado lo guarda en la varibale global sArgumentos global T T.insert(END, argumentos) b = Button(root, text=Aceptar, command=click) b.pack(fill=BOTH, expand=1) b = Button(root, text=Cancelar, command=root.destroy) b.pack(fill=BOTH, expand=1) mainloop() En la aplicación se invoca a editar('valor a editar') y en la variable global sArgumentos se almacena la edición. Que además es la variable que contiene el origen. Me gustaría saber si alguien ha resuelto este problema de editar el contenido de variables mejor que esto. Para empezar: los objetos string son inmutables. No puedes editarlos. Como mucho podrás crear nuevas cadenas a partir de otras. Si lo que quieres es un interface en Tkinter, lo recomendable es usar las StringVars. Lee la documentación porque tienen tienen muchas características interesantes. Aquí sólo te pongo un código para que te oriente: import Tkinter as tk master = tk.Tk() v = tk.StringVar() v.set(A variable text) e = tk.Entry(master, textvariable=v) e.pack() b = tk.Button(master, text=get, width=10, command=master.quit) b.pack() tk.mainloop() edited_text = v.get() print(edited_text) Gracias. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R Quarks, bits y otras criaturas infinitesimales: http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ___ Python-es mailing listPython-es@python.orghttps://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R Quarks, bits y otras criaturas infinitesimales: http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
2014-08-18 15:02 GMT+02:00 Chema Cortes pych...@gmail.com: editor = os.getenv('EDITOR') En mi máquina (Fedora LXDE) no está definida, y el comando editor tampoco existe. Sin embargo, siempre puedes tener vi en la recámara. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
El 18 de agosto de 2014, 15:25, Daπid davidmen...@gmail.com escribió: 2014-08-18 15:02 GMT+02:00 Chema Cortes pych...@gmail.com: editor = os.getenv('EDITOR') En mi máquina (Fedora LXDE) no está definida, y el comando editor tampoco existe. Sin embargo, siempre puedes tener vi en la recámara. Entonces tampoco tienes definido el sistema de alternativas (update-alternatives). 'vi' es siempre seguro que esté, aunque no es tan seguro que el usuario sepa como salir de él. Por eso suele incluirse 'nano' como editor más amigable con el usuario. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R Quarks, bits y otras criaturas infinitesimales: http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
2014-08-17 18:08 GMT-05:00 kausdiv kaus...@gmail.com: Magistral, Chema. Mucho mejor que lo que yo usaba. Por cierto como haces tu para editar en aplicaciones de consola ? En aplicaciones por consola lo que se suele hacer es pasar las opciones por la linea de comandos, por ejemplo: script.py -o --foo bar baz Chequea el módulo argparse[0] que viene incluido en python para algo simple o el módulo click[1] para una aplicación mucho más compleja. Saludos [0] https://docs.python.org/dev/library/argparse.html [1] http://click.pocoo.org/ -- A menudo unas pocas horas de Prueba y error podrán ahorrarte minutos de leer manuales. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
Una informacin muy buena. Pero tengo una duda.. una aplicacin den consola en windows funcionara ? qu editor abrira ? Saludos. El 18/08/2014 15:02, Chema Cortes escribi: El 18 de agosto de 2014, 1:08, kausdiv kaus...@gmail.com escribi: Magistral, Chema. Mucho mejor que lo que yo usaba. Por cierto como haces tu para editar en aplicaciones de consola ? No suelo necesitarlo, pero dejara que las tareas de edicin las hagan los editores (vim/emacs/nano...notepad...st2). Crea un fichero temporal, aade el texto, y brelo con el editor por defecto que tenga el sistema: import os import subprocess import tempfile def editar(texto): with tempfile.NamedTemporaryFile(mode="w+",suffix='.txt',delete=False) as fp: fp.write(texto) filename = fp.name if os.name=="nt": subprocess.call("notepad "+filename) elif os.name == "posix": editor = os.getenv('EDITOR') if not editor: editor = "editor" # normalmente un alias del editor 'nano' subprocess.call(editor + ' ' + filename) with open(filename) as fp: res = fp.read() os.remove(filename) return res texto = editar("Hello world!") print(texto) saludos. El 18/08/2014 0:16, Chema Cortes escribi: El 17 de agosto de 2014, 19:45, kausdiv kaus...@gmail.com escribi: Hola. Estoy haciendo varias aplicaciones/utilidades de consola que necesito. La cuestin es que no conozco ninguna forma de "editar" una variable, con raw_input se introduce nueva.. en fin he recurrido a Tkinter. Pero me parece una tremenda chapuza lo que he hecho: --codigo chapuza-- from Tkinter import * global T global sArgumentos root = Tk() T = Text(root, height=4, width=60) T.pack() sArgumentos = "" def click(): """Debe lanzarse en el click de Aceptar""" global T global sArgumentos sArgumentos = T.get('1.0', 'end').strip() root.destroy() def editar(argumentos): """Edita los argumentos y el resultado lo guarda en la varibale global sArgumentos """ global T T.insert(END, argumentos) b = Button(root, text="Aceptar", command=click) b.pack(fill=BOTH, expand=1) b = Button(root, text="Cancelar", command=root.destroy) b.pack(fill=BOTH, expand=1) mainloop() En la aplicacin se invoca a
Re: [Python-es] Editar variables en aplicaciones de consola
lo que podes hacer es usar locals() o globals depende x = 1 print locals() locals()[x] = 2 print x=,x ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
no entiendo valga la rebusnancia que no entendes capturas con raw x= hola lo partís, metes la variable asi como se muestra en lo otro y ya . ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Editar variables en aplicaciones de consola
El 17 de agosto de 2014, 19:45, kausdiv kaus...@gmail.com escribió: Hola. Estoy haciendo varias aplicaciones/utilidades de consola que necesito. La cuestión es que no conozco ninguna forma de editar una variable, con raw_input se introduce nueva.. en fin he recurrido a Tkinter. Pero me parece una tremenda chapuza lo que he hecho: --codigo chapuza-- from Tkinter import * global T global sArgumentos root = Tk() T = Text(root, height=4, width=60) T.pack() sArgumentos = def click(): Debe lanzarse en el click de Aceptar global T global sArgumentos sArgumentos = T.get('1.0', 'end').strip() root.destroy() def editar(argumentos): Edita los argumentos y el resultado lo guarda en la varibale global sArgumentos global T T.insert(END, argumentos) b = Button(root, text=Aceptar, command=click) b.pack(fill=BOTH, expand=1) b = Button(root, text=Cancelar, command=root.destroy) b.pack(fill=BOTH, expand=1) mainloop() En la aplicación se invoca a editar('valor a editar') y en la variable global sArgumentos se almacena la edición. Que además es la variable que contiene el origen. Me gustaría saber si alguien ha resuelto este problema de editar el contenido de variables mejor que esto. Para empezar: los objetos string son inmutables. No puedes editarlos. Como mucho podrás crear nuevas cadenas a partir de otras. Si lo que quieres es un interface en Tkinter, lo recomendable es usar las StringVars. Lee la documentación porque tienen tienen muchas características interesantes. Aquí sólo te pongo un código para que te oriente: import Tkinter as tk master = tk.Tk() v = tk.StringVar() v.set(A variable text) e = tk.Entry(master, textvariable=v) e.pack() b = tk.Button(master, text=get, width=10, command=master.quit) b.pack() tk.mainloop() edited_text = v.get() print(edited_text) Gracias. ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/ -- Hyperreals *R Quarks, bits y otras criaturas infinitesimales: http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es ___ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/