¿Que estoy haciendo mal?
#!usr/bin/python
import os
print " Test "
os.system.cls
Hola!
Pues lo que estas haciendo mal, es llamar a la funcion system.
Estas llamandola así:
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: >>> 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
perfecto gracias
He visto ejemplos y me he dado cuenta que también funciona así los atributos, con una comilla:
os.system('cls')
No se si la diferencia de usar 1 comilla o comillas dobles puede afectar mucho xD
Solucionado.
Hola!
Segun se, no tiene ninguna diferencia usar comillas simples o dobles, lo que si, te permiten escribir cosas así:
>>> print "hola \"mundo\""
hola "mundo"
>>> print 'hola \'mundo\''
hola 'mundo'
>>>
de esta forma:
>>> 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!
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:
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:
"Hola'fsgefgh'sfvgerdfgte'a"
'hola"fsbhdehet"egrghre"a'
Saludos!
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:
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/
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
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.
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)
>>> os.listdir("C:\\")
>>> os.listdir("C:/")
Saludos!
Ya, pero yo me he acostumbrado así y mira... :rolleyes:
Cita de: RyogiShiki en 9 Febrero 2012, 16:49 PM
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:
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
Puedes hacer un bucle while:
contador = 0
while contador < 500:
print '\n'
contador += 1
Esto iría añadiendo 1 al valor de contador y mostrando una línea en blanco. Cuando contador llegara a 500, se rompe el bucle.