Re: [Python-es] Editar variables en aplicaciones de consola

2014-08-18 Por tema Chema Cortes
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 Por tema Daπid
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

2014-08-18 Por tema Chema Cortes
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-18 Por tema Carlos Zuniga
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

2014-08-18 Por tema kausdiv

  
  
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

2014-08-17 Por tema Hiko hitokiri
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

2014-08-17 Por tema Hiko hitokiri
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

2014-08-17 Por tema Chema Cortes
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/