2017-08-30 14 views
0

私はこれとしばらくの間闘ってきました。私はPythonでフォルダの内容に基づいてhtmlを修正しようとしています。しかし、私がそれを修正しようとするたびに、すべてがクラッシュするでしょう。私はPythonだけでなくHTMLも新しくなっています。私はそれを修正するためにHTMLファイルといくつかのサブ機能をロードしたクラスを作った:html文字列をPythonに置き換える

class htmlfile(object): 
    data = "" 

    def openHTML(self, name="main.html"): 
     # f = open('main.html') 
     # for line in f: 
     #  #print line.replace("Thinominal", "") 
     with open(name) as myHtml: 
      data = myHtml.read() 
     self.data = data 

    # def __repr__(self): 
    #  return "Test()" 
    def __str__(self): 
     return self.data 

    def replace(self, location, insert): 
     self.data.replace(location, insert) 

    def makeBackground(self, location): 
     self.data.replace("backgrounds: [", "backgrounds: ["+ getPhotos2()) 

と他の機能のフォルダから「コンテンツ」/写真のリストを取得し、後でに挿入されるだろう文字列を返すようにHTML:

def getPhotos2(dir, type="jpg"): # get Photo from a directory with a chosen Type. Default Type = jpg 
    os.chdir(dir) 
    data = "" 
    for file in glob.glob("*.%s" % type): 
     data = data + "{src: '%s/%s', fade: 2000}," % (dir, file) 
    return data 

が、私はこれを実行するたびに、このエラーが表示さ:

self = <__main__.htmlfile object>, self.data = '<!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <...\n</script>\r\n<!-- /Navbar-->\r\n\r\n</body>\r\n\r\n</html>', self.data.toString undefined, global getPhotos2 = <function getPhotos2> 

私は理解していません。 pythonが文字列/テキストファイルとしてhtmlを開いていませんか?それを印刷しますか?あなただけの場合:

html = """ <head>Hello World</head>""" 
print html 

これは動作します。あなたもできる:

html.replace("hello world", "BYE BYE")あまりにも。それで私はここで何が間違っていたのですか?何か不足していますか?どんなアドバイスもありがとうございます。私はそれがSTRINGだったかのようにHTML形式のいずれかの部品を交換するには、ちょうどできたい

htmlfile = htmlfile() 
htmlfile.openHTML() 
htmlfile.makeBackgroud("background") 
print htmlfile 

これはどのように私は、関数を呼び出しています。例えば: これを手動で移入さ:

backgrounds: [ 
     {src: './img/nature1.jpg', fade: 2000}, 
     {src: './img/bw1.jpg', fade: 2000}, 
     {src: './img/portrait1.jpg', fade: 2000}, 
     {src: './img/portrait5.jpg', fade: 2000}, 
     {src: './img/portrait2.jpg', fade: 2000}, 
     {src: './img/portrait3.jpg', fade: 2000}, 
     {src: './img/portrait4.jpg', fade: 2000}, 
     {src: './img/forest.jpg', fade: 2000} 

    ] 

を「makeBackground」機能と、それはそれらの文字列を生成し、HTMLの中にそれを挿入します。 coolImg.jpgを含むフォルダコールバックグラウンドがある場合。背景を生成させる:{src: './img/coolImg.jpg', fade: 2000}とそれを "背景:"セクションに挿入します。結果:

backgrounds: [ 
     {src: './img/nature1.jpg', fade: 2000}, 
     {src: './img/bw1.jpg', fade: 2000}, 
     {src: './img/portrait1.jpg', fade: 2000}, 
     {src: './img/portrait5.jpg', fade: 2000}, 
     {src: './img/portrait2.jpg', fade: 2000}, 
     {src: './img/portrait3.jpg', fade: 2000}, 
     {src: './img/portrait4.jpg', fade: 2000}, 
     {src: './img/forest.jpg', fade: 2000}, 
     {src: './background/coolImg.jpg', fade: 2000} <- THIS HERE 
    ] 
+0

あなたは何もエラーを表示していません。あなたはどこで機能を呼びますか?結果はどうしていますか? –

+2

関数をどのように呼び出すのか、またどのようなことを達成したいのかをお知らせください。例が役に立ちます。 – Ajay2588

+0

申し訳ありません。私はどのように関数を呼び出してコードを編集しました。 – Rook

答えて

0

私は今すぐ動作させる方法を考え出しました。それは、主にノブであることに対する私のせいだった。置換されたStringの値を元のStringに置き換えるように設定するのを忘れていました。このように:

self.data = self.data.replace(oldstring, newstring) 

「self.data =」が欠落していました。 私の関数が求めているのと同じ量のパラメータを与えるのを忘れてしまった。

def getPhotos2(dir, type="jpg"): # get Photo from a directory with a chosen Type. Default Type = jpg 
os.chdir(dir) 
data = "" 
for file in glob.glob("*.%s" % type): 
    data = data + "{src: '%s/%s', fade: 2000}," % (dir, file) 
return data 

print "Content-type: text/html\n" 


# html class 
class htmlfile(object): 
data = "" 

def openHTML(self, name="main.html"): 
    with open(name) as myHtml: 
     data = myHtml.read() 
    self.data = data 

def __str__(self): 
    return self.data 

def replace(self, location, insert): 
    self.data = self.data.replace(location, insert) 
def makeBackground(self, location): 
    self.data = self.data.replace("backgrounds: [", "backgrounds: ["+ getPhotos2(location)) 


htmlfile = htmlfile() 
htmlfile.openHTML() 
htmlfile.makeBackground("photo") 
print htmlfile 

この作業は、誰かが間違いを見つけられる場合は、私に教えてください。お手伝いをしていただきありがとうございます^^

関連する問題