2016-03-20 22 views
0

Gh-sayfalarına kaydetmek istediğim eski bir projem var ve bir sürü klasörde bir sürü html dosyası var.Klasörler ve karakterleri yineleyen Python

Bu yüzden, içeriğin tüm web'de nasıl yapılacağına benzer şekilde gh-sayfalarında göz atılabilsin diye, içerilen tüm html köprülerini gösteren bir dizin sayfası yaratacak bir python parçasını birleştiriyorum. Apache gibi sunucular.

Başlamak için tek bir dosyada tüm içerik baskısı var ama ne yazık ki python \ adresinde \ numaralı dosyadan kaçtı. Bunun IO hatalarına neden olmasını engellemeye çalışıyorum ama biraz sıkışmış durumdayım.

import os 

class indexer: 
    path = "~" 
    prod = [] 
    def __init__(self,p): 
     self.path=p 
    def HtmlFrek(self,k): 
     print("rek") 
     os.chdir(k) 
     ret="<h1>"+k+"</h1>" 
     files = [f for f in os.listdir('.') if os.path.isfile(f) and f.split(".")[len(f.split("."))-1]=="html"] 
     for t in files: 
      t.replace(".","") 
      t.replace("\\","/") 
      ret+= "<a href = http://krewn.github.io/datasci"+k+">"+k+"</a>\n" 
     folders = [x[0] for x in os.walk('.')] 
     for k in folders: 
      print k 
      if(k == '.'): 
       continue 
      print k 
      ret+="<div class='blue1'>" 
      ret+=self.HtmlFrek(k) 
      ret = "</div>" 
     os.chdir("..") 
     return(ret) 

    def HtmlProd(self): 
     print("start") 
     ret = [] 
     ret.append("""<!DOCTYPE html><html>""") 
     ret.append("<div class = 'ClearShadeLeft'>") 
     folders = [x[0] for x in os.walk('.')] 
     for k in folders: 
      ret[1]+="<div class='blue1'>" 
      ret[1]+=self.HtmlFrek(k) 
      ret[1] = "</div>" 

     ret[1] = "</div>" 
     ret.append("""<\html><html>""") 
     self.prod = ret 
     return(ret) 

i = indexer(".") 
i.HtmlProd() 
print i.prod 
for k in i.prod: 
    print k 
print() 

Düzenleme: Burada cevabı [f for f in os.listdir(somedir) if os.path.isfile(f)] ile os.walk değiştirmektir düşünüyorum.

Başka Düzenleme:

kod bu sürümü çalışır ...

import os 

class indexer: 
    path = "~" 
    site = "http://krewn.github.io" 
    proj = "Reprogramming" 
    prod = [] 
    loc=[] 

    def __init__(self,p): 
     self.path=p 
    def fprep(self,name): 
     name.replace(".","") 
     name.replace("\\","/") 
     return(name) 
    def refPrep(self): 
     ref = self.site+"/"+self.proj 
     for qw in self.loc: 
      ref+="/"+qw 
     return(ref) 
    def HtmlFrek(self,adir): 
     self.loc.append(adir) 
     os.chdir(adir) 
     ret="<h2>"+adir+"</h2>" 
     files = [f for f in os.listdir('.') if os.path.isfile(f) and f.split(".")[len(f.split("."))-1]=="html"] 
     for t in files: 
      ret+="<a href ="+self.refPrep()+"/"+self.fprep(t)+">"+self.fprep(t)+"</a><br>\n" 
     images = [f for f in os.listdir('.') if os.path.isfile(f) and f.split(".")[len(f.split("."))-1]=="png"] 
     for i in images: 
      i = self.fprep(i) 
      ref = self.refPrep() 
      ret+= "<img src="+ref+"/"+i+">\n" 
     folders = [f for f in os.listdir(".") if not os.path.isfile(f)] 
     for k in folders: 
      if(k.__contains__(".")): 
       continue 
      ret+="<div class='blue1'>" 
      ret+=self.HtmlFrek(k) 
      ret+="</div>" 
     os.chdir("..") 
     del self.loc[len(self.loc)-1] 
     return(ret) 

    def HtmlProd(self): 
     print("start") 
     ret = "" 
     ret+="""<!DOCTYPE html><html>""" 
     ret+="<div>" 
     files = [f for f in os.listdir('.') if os.path.isfile(f) and f.split(".")[len(f.split("."))-1]=="html"] 
     for t in files: 
      ret+="<a href ="+self.refPrep()+"/"+self.fprep(t)+">"+self.fprep(t)+"</a><br>\n" 
     folders = [f for f in os.listdir(".") if not os.path.isfile(f)] 
     for k in folders: 
      if(k.__contains__(".")): 
       continue 
      print k 
      ret+="<div>" 
      ret+=self.HtmlFrek(k) 
      ret+="</div>" 
     ret+="</div>" 
     ret+="""</html>""" 
     self.prod = ret 
     return(ret) 

i = indexer(".") 
q=i.HtmlProd() 
#print i.prod 

w = open("index.html","w") 
w.write(q) 
w.close() 
+2

Yalnızca çalışmayan bir kodla daha küçük bir örnek gönderir misiniz? Konsola yazdırabilir ve neyin yanlış olduğunu görmemize yardımcı olacak yanlış çıktıyı gösterebilir ve sorunuzu daha iyi yanıtlayabilir. –

+2

Python'un yerleşik os.walk yöntemini kullanırsanız kodunuzu basitleştirebileceğinizi garanti edin (bkz. Https://docs.python.org/2.7/library/os.html?highlight=os.walk#os.walk) . – djmoch

+0

@Emil, sry, bir ilk çağrı ve ana özyinelemeli bir yöntemdir. Bir sınıfa sardım ama nixing sadece 2 satır ya da öylesine kaydederdi. – kpie

cevap

0

Doxygen şey bu tür için arkadaşıdır. Bir kaynak kod klasörü için oksijen verin. Kaynak olacağını düşündüğünüz dosya uzantılarını belirtirsiniz. Sonra gider ve klasördeki her şeyin bir dizinini oluşturur. Bunu html veya pdf olarak çıkarabilirsiniz.

+0

Önerisi için teşekkürler, ama yine de çalıştı. Ellerimi kirletmek ve koduma ne kadar kontrol ve potansiyel ekleyebileceğimi keşfetmek için gerçekten tatmin edici buluyorum. – kpie