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()
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. –
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
@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