import os.path
import sys
class DizinBilgisi:
  #Sinif yapicisi
  def __init__(self):
      #Ekrana yazarken kullanacagimiz sayaci ilkleyelim
      #Basina iki tane alt cizgi koydugumuz degiskenler
      #private degisken oluyormus :?
      self.__sayac = 0;
      #alt dizinleri dolasma varsayilan olarak kapali
      #sadece istenen dizin icerisindeki dosyalari listelesin
      self.__recursive = False;
  #Bu metod icerisindeki dosyalari listeleyecegimiz dizini
  #ayarlamak icin kullaniliyor
  def setDizin(self,_dizin):
      #dolasilacak olan dizin
      #bu saha da private
      self.__dizin=_dizin;
  #alt dizinlerin dolasilip dolasilmayacagini ayarlayan
  #metod
  def setRecursive(self,_recursive):
      self.__recursive=_recursive;
  #ekrana yazma islemini baslatmak icin kullanilan
  #metod
  def ekranaYaz(self,_dizin="",_recursive=""):
      if(_dizin!=""):
          self.__dizin=_dizin
      if(_recursive!=""):
          self.__recursive=_recursive
      #Bu metodun amaci dizinin icerdigi dosyalarin adlarini
      #ekrana yazmak      
      self.__diziniEkranaYaz(self.__dizin)
  #private tanimlanmis ve parametre olarak
  #aldigi dizin icerisindeki dosyalari
  #ekrana yazan metod
  def __diziniEkranaYaz(self,dizinIsmi):
      #Ekrana dizin adini yazalim
      print dizinIsmi
      #dizin seviyesi icin sayaci arttiralim
      self.__sayac+=1
      #dizin icerisindeki dosya listesini alalim
      dosyalar = os.listdir(dizinIsmi)
      #listeyi dolasalim
      for file in dosyalar:
          #dosya ismini uygun sekilde ayarlamaliyiz
          dosyaIsmi = dizinIsmi+"/"+file
          #eger bu dosya bir dizinse
          if os.path.exists(dosyaIsmi) & os.path.isdir(dosyaIsmi):
              #ve alt dizinleri dolasmamiz isteniyorsa
              if self.__recursive==True:
                  #alt dizinleri dolasalim
                  self.__diziniEkranaYaz(dosyaIsmi)
          #bu dosya bir dosya ise
          elif os.path.isfile(dosyaIsmi):
              #bilgisini ekrana yazalim
              self.__dosyaAdiniYaz(file)
          #houston bir problemimiz var
          else:
              print "Dizin parametresinde hata var"
      #dizin seviyesini azaltalim
      self.__sayac-=1
  #bu metodun amaci dosya ismini guzel bir
  #sekilde ekrana yazalim
  def __dosyaAdiniYaz(self,dosyaAdi):
      tabs=""
      #dizinin seviyesi kadar tab ekliyoruz
      for i in range(self.__sayac):
          tabs+="\t"
      #tablarla birlikte dosya adini ekrana yaziyoruz
      print tabs+dosyaAdi
#Programin calistirilma kodu
def main():
  #DizinBilgisi sinifinin bir ornegini yaratalim
  db = DizinBilgisi()
  #girilen arguman sayisina gore islem yapacagiz
  if len(sys.argv)==2:
      #dizin ismi girilmis demek
      db.setDizin(sys.argv[1])
  elif len(sys.argv)==3:
      #dizin ismi ve recursive olup olmadigi girilmis
      db.setDizin(sys.argv[1])
      if sys.argv[2]=='r':
          db.setRecursive(True)
  else:
      print "Arguman olarak en azindan dizin yolunu vermeniz gerekmektedir."
      print "Alt dizinlerin listelenmesi icin dizin yolundan sonra r yazmaniz yeterlidir."
      sys.exit()
  db.ekranaYaz()
if __name__ == "__main__":
  main()
Kod Biçimlendirme için : http://formatmysourcecode.blogspot.com/
----------------
Now playing: Haggard - Chapter III: Awaking The Centuries
Hiç yorum yok:
Yorum Gönder