0

テンプレートからいくつかのファイルを作成する必要があります。データベースからフェッチするためにpsycopg2を使用しています。次に、ループします。次に、ファイルに書き込む必要があります。ありがとう!

import sys
from HTMLParser import HTMLParser
from xml.etree import cElementTree as etree
import psycopg2
import psycopg2.extras

class LinksParser(HTMLParser):
  def __init__(self):
      HTMLParser.__init__(self)
      self.tb = etree.TreeBuilder()

  def handle_starttag(self, tag, attributes):
      self.tb.start(tag, dict(attributes))

  def handle_endtag(self, tag):
      self.tb.end(tag)

  def handle_data(self, data):
      self.tb.data(data)

  def close(self):
      HTMLParser.close(self)
      return self.tb.close()

conn = psycopg2.connect(dbname="**", user="**", password="**", host="/tmp/", port="**")
cur.execute("SELECT * FROM landingpagedata;")
rows = cur.fetchall()
template = 'template.html'

parser = LinksParser()
# parser.feed(open('landingIndex.html').read()) #for testing
# root = parser.close()

for row in rows:
    parser.feed(open(template).read())
    root = parser.close()

    #title
    title = root.find(".//title")
    title.text = str(row['title'])
    f = open(row['page_name'], 'w')
    root.write(f)
    parser = LinksParser()

エラーは次のとおりです。

Traceback (most recent call last):
File "/Users/Morgan13/Programming/LandingPageBuilder/landingPages/landingBuilderTest.py", line 87, in <module>
    main()
File "/Users/Morgan13/Programming/LandingPageBuilder/landingPages/landingBuilderTest.py", line 75, in main
    root.write('page_name')
AttributeError: write

これらのページは既に存在するため、open('page', 'w') を使用していますか?

4

1 に答える 1

1

f.write(root)ではなく、欲しいと思いますroot.write(f)。( str(root) で、書きたい HTML が得られると仮定します。)

于 2013-05-09T02:03:45.453 に答える