(solucionado) [python] limpiar la pantalla

Iniciado por Eleкtro, 9 Febrero 2012, 15:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

¿Que estoy haciendo mal?

Código (Python) [Seleccionar]
#!usr/bin/python

import os

print " Test "

os.system.cls








Jirp96

#1
Hola!
Pues lo que estas haciendo mal, es llamar a la funcion system.
Estas llamandola así:
Código (python) [Seleccionar]
os.system.cls

Cuando la llamas asi, estas llamando al atributo "cls", dentro del objeto system, dentro del módulo os. De hecho, para python lo que haces esta "bien"(por ej, asi puedes ver los atributos de las clases), pero, al no existir "cls" dentro de system, da error.

Mira esto:
Código (python,12) [Seleccionar]
>>> import os
>>> help(os.system)
Help on built-in function system in module nt:

system(...)
   system(command) -> exit_status
   
   Execute the command (a string) in a subshell.

>>> os.system("cls")
0
>>> #como ves, no muestra el resultado de "cls", solo el "exit_status"(0)*


Entonces, debes llamar a la funcion system así: os.system(comando_a_ejecutar)
*comando_a_ejecutar tiene que ser una cadena, como "cls"(con las comillas).

Espero haberte ayudado.
Saludos!
EDITO: *Si lo ejecuto desde IDLE, no muestra el resultado de cls ni ningun otro comando, peero, si ejecutas python desde la consola funciona sin problemas  :o

Eleкtro

perfecto gracias

He visto ejemplos y me he dado cuenta que también funciona así los atributos, con una comilla:

Código (Python) [Seleccionar]
os.system('cls')

No se si la diferencia de usar 1 comilla o comillas dobles puede afectar mucho xD

Solucionado.








Jirp96

Hola!
Segun se, no tiene ninguna diferencia usar comillas simples o dobles, lo que si, te permiten escribir cosas así:

Código (python) [Seleccionar]
>>> print "hola \"mundo\""
hola "mundo"
>>> print 'hola \'mundo\''
hola 'mundo'
>>>


de esta forma:

Código (python) [Seleccionar]
>>> print "hola 'mundo'"
hola 'mundo'
>>> print 'hola "mundo"'
hola "mundo"
>>>


La segunda forma(alternando las comillas) queda mas facil de leer.
Es la unica diferencia que se me ocurre. :xD
Saludos!

WaAYa HaCK

Eso es porque en IDLE, los comandos del sistema que devuelven salida no la vuelcan en la GUI, sólo comprueban el estado de salida (bien o mal).

Por ejemplo:
Código (python) [Seleccionar]
import os
os.system("dir") # devuelve 0
os.system("dir & pause") # abre un CMD con un dir, y después devuelve 0

Esto hablando desde IDLE.

Lo que hago arriba no es muy correcto: si quieres mostrar un listado de archivos, la función os.listdir("R:/uta/al/directorio/") devuelve una lista con los archivos y directorios. En Python, aunque uses Windows, los slash deben ir así /.


Y lo de las comillas:
Código (python) [Seleccionar]
"Hola'fsgefgh'sfvgerdfgte'a"
'hola"fsbhdehet"egrghre"a'


Saludos!
La cacatúa yoyó es nueva en el zoo!

RyogiShiki

#5
Cita de: EleKtro H@cker en  9 Febrero 2012, 16:36 PM
perfecto gracias

He visto ejemplos y me he dado cuenta que también funciona así los atributos, con una comilla:

Código (Python) [Seleccionar]
os.system('cls')

No se si la diferencia de usar 1 comilla o comillas dobles puede afectar mucho xD

Solucionado.

Advertencia - mientras estabas escribiendo, fueron publicadas 2 respuestas. Probablemente desees revisar tu mensaje.

Sobre las comillas: http://elclubdelautodidacta.es/wp/2011/10/python-capitulo-22-comillas-simples-dobles-y-triples/

Código (python) [Seleccionar]
os.system('cls') esa manera de hacerlo es dependiente de la plataforma y va a tirar al suelo la portabilidad de la que se hace gala en Python, además de ser una llamada costosa de realizar. Una forma de hacerlo es haciendo un bucle que inserte retornos de carro en el bufer de entrada para "simular" una limpieza de pantalla.

Saludos


WaAYa HaCK

Yo estaba haciendo un script para pasar archivos por internet y usaba argumentos. Cuando arrastras un archivo a la consola de Python, se coloca con comillas dobles por defecto: debes prever esto si vas a usar el sys.
La cacatúa yoyó es nueva en el zoo!

Jirp96

Hola!
@WaAYa HaCK: Sobre los slash, en windows tambien podes escaparlos con otro slash y(al menos a mi) funcionan sin problemas(aunque queda mucho mas legible usar "/" :xD)

Código (python) [Seleccionar]
>>> os.listdir("C:\\")

>>> os.listdir("C:/")



Saludos!

WaAYa HaCK

Ya, pero yo me he acostumbrado así y mira...  :rolleyes:
La cacatúa yoyó es nueva en el zoo!

Eleкtro

Cita de: RyogiShiki en  9 Febrero 2012, 16:49 PM
Código (python) [Seleccionar]
os.system('cls') esa manera de hacerlo es dependiente de la plataforma y va a tirar al suelo la portabilidad de la que se hace gala en Python, además de ser una llamada costosa de realizar. Una forma de hacerlo es haciendo un bucle que inserte retornos de carro en el bufer de entrada para "simular" una limpieza de pantalla.

O esto:

Código (PYTHON) [Seleccionar]
print "\n " +500

No funciona xD, aún no se la sintaxis bien pero el code era algo parecido y escribía 500 líneas sin contenido, supongo que ya sabrán de que hablo xD

Aunque prefiero usar CLS de momento

saludos