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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda con el modulo os de python3
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con el modulo os de python3  (Leído 2,432 veces)
retr02332

Desconectado Desconectado

Mensajes: 89


Learn, Imagine and Create.


Ver Perfil
Duda con el modulo os de python3
« en: 30 Noviembre 2019, 05:15 am »

def root_check(self):
      try:
         check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
         #check = os.listdir(r"C:\Windows\Temp")
      except:
         self.admin = "\nNo eres usuario root."
      else:
         self.admin = "\nEres usuario root."

La parte que esta comentada la hice yo, porque no entiendo muy bien lo que esta a la derecha del igual de check, es decir. Desde os.listdir hasta Temp.

os.listdir lista el directorio, tal cual como hacer un dir.

pero desde os.sep.join empieza lo desconocido.

Agradeceria que me dieran sus conocimientos respecto a esta duda, y como ingrediente final, me guataria saber porque se usa os.sep.join y no os.path.join?.

sin mas que decir, muchas gracias y que tengan un excelente dia.


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Duda con el modulo os de python3
« Respuesta #1 en: 30 Noviembre 2019, 17:27 pm »

def root_check(self):
      try:
         check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
         #check = os.listdir(r"C:\Windows\Temp")
      except:
         self.admin = "\nNo eres usuario root."
      else:
         self.admin = "\nEres usuario root."

La parte que esta comentada la hice yo, porque no entiendo muy bien lo que esta a la derecha del igual de check, es decir. Desde os.listdir hasta Temp.

os.listdir lista el directorio, tal cual como hacer un dir.

pero desde os.sep.join empieza lo desconocido.

Agradeceria que me dieran sus conocimientos respecto a esta duda, y como ingrediente final, me guataria saber porque se usa os.sep.join y no os.path.join?.

sin mas que decir, muchas gracias y que tengan un excelente dia.
Código
  1. def root_check(self):
  2.      try:
  3.         check = os.listdir(os.sep.join([os.environ.get("SystemRoot",r'C:\windows'),'temp']))
  4.         #check = os.listdir(r"C:\Windows\Temp")
  5.      except:
  6.         self.admin = "\nNo eres usuario root."
  7.      else:
  8.         self.admin = "\nEres usuario root."

defdefine una función.
(self)acepta un parámetro.

tryUn intento. Se utiliza para manejar errores durante la ejecucción. Por ejemplo si intentas escribir en un archivo sin permisos, si no manejas el error, el programa seguirá intentando trabajar con un archivo al que no tiene acceso o se cerrará directamente el programa de forma inesperada. Con try, en el caso de un error/excepción puedes manejar los errores del bloque con expect. Por ejemplo podrías sacarle un texto al usuario diciendo: No tienes permisos para escribir en el archivo. Correr el programa como root?
 
check contenedor al que se le asigna el resultado de la expresión a la derecha del operador de asignación.

os.listdir(ruta)retorna una lista con los archivos y directorios visibles.

os.sep.joinretorna la concatenación de los parámetros.

os.environ.get("SystemRoot"Obtiene el valor de la variable SystemRoot (la ruta) del entorno de ejecución.

 r'C:\windows' la r indica que es un string raw. Es decir, que la barra \ sea parte de los caracteres y no sea usada como un caracter/operador para escape los caracteres. Por ejemplo \n es un salto de linea. Si tratases de usar la ruta "D:\new" como ves, estarías llamando al caracter \n para saltar la linea. Con r" o r' se indica que no haga esto, que el caracter \ forma parte del string o la ruta.

Por defecto get obtiene el valor de la variable SystemRoot y en caso de que no se encuentre retorna C:\Windows

Con join se añade temp a la ruta.

Si no se puede listar el directorio es probable que no tengas permisos de lectura y por lo tanto no seas Root.

El except en este código es bastante cutre, porque no comprueba que el error sea causado por culpa de no tener permisos o no ser root. Podrías tener permisos y no ser esa la causa del error. Si no utilizases try y except para manejar los errores, se te cerraría el programa de forma inesperada.

Después guarda un string en el objeto admin que pertenece a self, indicando si se pudo listar el directorio o si no.

Se usa join en vez de path porque path maneja y ordena las rutas según ciertos criterios, mientras que join hace exactamente lo que le indicas.

Utiliza la etiquetas Geshi


« Última modificación: 30 Noviembre 2019, 17:29 pm por @?0!,5^34 » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Estenografia en python3
Scripting
NikNitro! 3 3,476 Último mensaje 16 Julio 2017, 10:25 am
por NikNitro!
Duda con encoding y el modulo base64 en python3
Scripting
retr02332 4 2,779 Último mensaje 30 Noviembre 2019, 02:22 am
por retr02332
Duda con el modulo email de python3
Scripting
retr02332 1 2,203 Último mensaje 30 Noviembre 2019, 07:11 am
por engel lex
llamar modulo dentro de una clase | Python3
Scripting
Drakaris 1 2,799 Último mensaje 13 Septiembre 2020, 16:23 pm
por tincopasan
conflicto python3.11 python3.10
Python
sysax 1 5,626 Último mensaje 11 Noviembre 2023, 01:53 am
por D3s0rd3n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines