elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Mi consola no muestra nada...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Mi consola no muestra nada...  (Leído 4,325 veces)
BigByte

Desconectado Desconectado

Mensajes: 46


Ver Perfil WWW
[Python] Mi consola no muestra nada...
« en: 20 Diciembre 2014, 23:37 pm »

Hola, buenas noches.

recien me he iniciado con la programacion en pyhton. Me decidi por hacer un script que recogiera informacion de un pc con el comando systeminfo

lo que deberia hacer basicamente es ejecutar systeminfo, crear un .txt, escribir los valores de systeminfo en el, alinear los datos y guardar el txt.

el problema es que al ejecutarlo no marca ningun error, se queda pensando un momento y la terminal me muestra una linea nueva en plan:
C:\Users\mi_user\Desktop>script.py
"aqui no ejecuta ni se ve nada"
C:\Users\mi_user\Desktop

deberia crear un archivo en el escritorio pero nada...
el codigo es este

Código
  1. import os
  2.  
  3. def information_extract():
  4. comando = "systeminfo"
  5. abrir = os.popen(comando)
  6. datos = "tubo.readlines()"
  7. nombre_pc = datos [1].split(" ")[-1].split("\n")[0]
  8. nombre_fichero = "informacion: "+nombre_pc+".txt"
  9. fichero = open(nombre_fichero, "W")
  10. fichero.writelines(datos)
  11. fichero.close()
  12. return nombre_fichero

sera algun error tonto, pero llevo toda la tarde con el.. ¿alguien me hecha una mano?

PD la version de python es la 2.7

saludos


En línea

¿Eres de Zaragoza y necesitas Ordenador? ¿El que tienes te va lento? ¿Has tenido infección de malware? ¡¡No te preocupes, yo te lo arreglo!!
(Zaragoza, España)

http://www.bigbyte.webnode.es
BigBear


Desconectado Desconectado

Mensajes: 545



Ver Perfil
Re: [Python] Mi consola no muestra nada...
« Respuesta #1 en: 21 Diciembre 2014, 00:57 am »

nunca estas llamando a la funcion information_extract() , te deberia quedar asi :

Código
  1. def information_extract():
  2. comando = "systeminfo"
  3. abrir = os.popen(comando)
  4. datos = "tubo.readlines()"
  5. nombre_pc = datos [1].split(" ")[-1].split("\n")[0]
  6. nombre_fichero = "informacion: "+nombre_pc+".txt"
  7. fichero = open(nombre_fichero, "W")
  8. fichero.writelines(datos)
  9. fichero.close()
  10. return nombre_fichero
  11.  
  12. information_extract()




En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: [Python] Mi consola no muestra nada...
« Respuesta #2 en: 21 Diciembre 2014, 01:02 am »

Hola

No es solo un fallo tonto, hay varios fallos graves en el script que imposibilitan su ejecución.

1) Has escrito una función, pero no llamas nunca a dicha función, el intérprete no va a procesar las instrucciones del bloque de la función por si solo sin que tu se lo indiques, estariamos apañaos xD.
Viendo ese fallo te recomiendo leer un tutorial básico de programación para comprender que es un método, una función (es un método que devuelve un valor), y como se pueden utilizar.

2) El nombre de un archivo en Windows no puede contener el caracter ":", es un caracter ilegal.

3) Al utilizar comillas o comillas dobles estás asignando un string, no el resultado de una función. ( var = "tubo.readlines()" )

4) Continuación del punto 3, de todas formas no existe ningún objeto llamado "tubo".

5) Deberías usar el método Popen del módulo subprocess, ya que se considera más seguro.

6) Dado que estás partiendo el string usando la función .readlines(), al intentar obtener el nombre del pc estás obteniendo una linea que contiene un breakline, es decir, un string multilinea, por lo tanto no puedes luego intentar adjuntarla en el nombre un archivo, ya que un nombre de archivo no puede contener un breakline.

7) Al abrir el Stream y especificar los permisos de lectura/ecritura con el método Open, estás escribiendo "W" para el permiso de escritura (Write), pero lo estás especificando en mayúsculas, y eso no está permitido, es "w", en minúsculas, de lo contrario dará un error. el StringCase es muy importante en un lenguaje tan restrictivo como es Python... o C#.
Código:
ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 'W'


Corrección:
Código
  1. from subprocess import Popen, PIPE, STDOUT
  2.  
  3. def ExtractSystemInfo():
  4. outStr    = Popen('systeminfo', shell=True, stdout=PIPE, stderr=STDOUT).stdout.read()
  5. outList   = outStr.splitlines(False)
  6. pcName    = outList[1].split(' ')[-1].split('\n')[0]
  7. filename  = "C:\\Info {0}.txt".format(pcName)
  8. with open(filename, "w") as fileStream:
  9. fileStream.writelines(outStr)
  10. return filename
  11.  
  12. filename = ExtractSystemInfo()
  13. print filename

Saludos
« Última modificación: 21 Diciembre 2014, 01:36 am por Eleкtro » En línea

BigByte

Desconectado Desconectado

Mensajes: 46


Ver Perfil WWW
Re: [Python] Mi consola no muestra nada...
« Respuesta #3 en: 21 Diciembre 2014, 16:07 pm »

Hola Elektro!

lo primero gracias por la respuesta y explicacion magistral. está claro que me queda todavia un tocho para saber hacer algo que creia sencillo. ;)

sin embargo, aunque el script se ejecute correctamente, al final da error de acceso denegado al escribir. (IOError: [Errno 13] Permission denied 'C:\\Info Nombre_PC.txt')

¿como se podria subsanar esto para que deje escribir el .txt?

gracias
En línea

¿Eres de Zaragoza y necesitas Ordenador? ¿El que tienes te va lento? ¿Has tenido infección de malware? ¡¡No te preocupes, yo te lo arreglo!!
(Zaragoza, España)

http://www.bigbyte.webnode.es
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.813



Ver Perfil
Re: [Python] Mi consola no muestra nada...
« Respuesta #4 en: 21 Diciembre 2014, 22:33 pm »

como se podria subsanar esto para que deje escribir el .txt?

Es un problema de permisos de la cuenta de usuario.

Prueba a ejecutar el script como Administrador, desactivar UAC, o crear el archivo en otra carpeta donde tengas permisos de escritura.

Saludos!
« Última modificación: 22 Diciembre 2014, 02:10 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
nod 32 no muestra letras (no se ve nada)
Seguridad
pirataNET 2 4,564 Último mensaje 1 Diciembre 2010, 22:31 pm
por 5eth
DataGrid No muestra nada [SOLUCIONADO]
.NET (C#, VB.NET, ASP)
proteus8 2 2,949 Último mensaje 23 Febrero 2011, 21:02 pm
por proteus8
[Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python
Scripting
AdeLax 0 4,260 Último mensaje 9 Agosto 2013, 22:45 pm
por AdeLax
[Python/Tkinter](Kyurem v2.0)Consola de comandos hecha en python (Continuación)
Scripting
Príncipe_Azul 5 4,912 Último mensaje 16 Abril 2014, 11:19 am
por AdeLax
se queda congelado y al reiniciar no muestra nada
Hardware
franfis 3 2,610 Último mensaje 24 Junio 2015, 00:46 am
por Zomkar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines