我有一箇舊項目,我想發佈在gh頁面上,並且我在一堆文件夾中有一堆html文件。Python遍歷文件夾和字符
所以我一直在拼湊一塊python,它會創建一個索引頁面,顯示所有包含的html超鏈接,這樣內容就可以在gh頁面上瀏覽,類似於完全在網頁上完成服務器,如Apache。
要開始我將所有的內容打印在一個文件中,但不幸的是,python將文件位置扔到py'Strings',其中\
被\
轉義。 我一直在試圖防止這種情況導致IO錯誤,但一直有點卡住。
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()
編輯:我想這裏的答案是用[f for f in os.listdir(somedir) if os.path.isfile(f)]
替換os.walk。
另一個編輯:
此的代碼版本的作品...
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()
你可以發佈一個較小的例子,只是不工作的代碼?如果您可以將它打印到控制檯並顯示不正確的打印輸出,這也將幫助我們查看出了什麼問題,並更好地回答您的問題。 –
如果您使用Python內置的os.walk方法,請確保您可以簡化代碼(請參閱https://docs.python.org/2.7/library/os.html?highlight=os.walk#os.walk) 。 – djmoch
@Emil,它是一個遞歸函數,具有初始調用和主遞歸方法。我把它包裝在一個班級裏,但是隻能保存2行左右。 – kpie