Skip to content

Instantly share code, notes, and snippets.

@ljesparis
Created January 4, 2015 15:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ljesparis/d087ea2ee60bc5cdffd5 to your computer and use it in GitHub Desktop.
Save ljesparis/d087ea2ee60bc5cdffd5 to your computer and use it in GitHub Desktop.
Directory nevagation
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Directory nevagation
from os import path
import os, glob
def search(directory=None,guiones='---'):
global cantidad_dir , cantidad_file
if directory:
try:
os.chdir(directory)
# metodo devolvera una lista de todos los archivos y directorios de
# el directorio actual... ejemplo : [./cosas, ./archivo, ...]
item_list = glob.glob(path.join('.','*'))
# Ordeno la lista de elementos que se me dio
item_list = sorted(item_list)
for item in item_list:
data = item.split('/')[1]# ejemplo: ./cosas , despues del split --> cosas
if path.isfile(item):
with open('/home/leoxnidas/Escritorio/log','a') as f:
f.write(guiones+'|'+data+'\n')
print guiones+'|'+data
cantidad_file += 1
elif path.isdir(item) :
with open('/home/leoxnidas/Escritorio/log','a') as f:
f.write(guiones+'|'+data+'\n')
print guiones+'|'+data
cantidad_dir += 1
# si es un directorio lo imprimo y despues le agrego 3 rayas mas a n,
# ya que va a entrar en el directorio
guiones += '----'
search(item,guiones)
os.chdir('..')# devolviendome un directorio atras ..
guiones = guiones.rsplit('-',4)[0]
except OSError as e:
# En caso de que no se pueda entrar en el directorio, atrapare el error
# pero como estoy en el Escritorio, no pasara un carajo =P
print "[+] Error ",e
#si ocurre un error... lo regisro en el log..
with open('/home/leoxnidas/Escritorio/log','a') as f:
f.write("[+] Error ",e)
else:
directory = path.dirname(path.realpath(__file__))
search(directory)
cantidad_file = 0
cantidad_dir = 0
def main():
# para no tener que eliminar el archivo existente... lo sobre escribo y listo
with open('/home/leoxnidas/Escritorio/log','w') as f:
f.write('')
search()
print "\ncantidad de directorios: {0}, cantidad de archivos: {1}".format(cantidad_dir,cantidad_file)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
print "\n[+] Error en la ejecucion del programa.."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment