Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中创建HTML_Python_Html - Fatal编程技术网

在python中创建HTML

在python中创建HTML,python,html,Python,Html,我正在寻找一种在python中动态创建html文件的方法。我正在写一个画廊脚本,它在目录上迭代,收集文件元数据。然后我打算使用这些数据自动创建一个基于html的图片库。一些非常简单的东西,只是一张图片表 我真的不认为手动写入文件是最好的方法,而且代码可能很长。那么,有没有更好的方法来实现这一点,可能是特定于html的呢?使用模板引擎,如或。我认为,如果我理解正确,您可以看到。模板,正如其他答案中所建议的,可能是最好的答案(我写了一个早期的、古怪的模板模块,名为,但其他答案中建议的现代成熟模块可能

我正在寻找一种在python中动态创建html文件的方法。我正在写一个画廊脚本,它在目录上迭代,收集文件元数据。然后我打算使用这些数据自动创建一个基于html的图片库。一些非常简单的东西,只是一张图片表


我真的不认为手动写入文件是最好的方法,而且代码可能很长。那么,有没有更好的方法来实现这一点,可能是特定于html的呢?

使用模板引擎,如或。

我认为,如果我理解正确,您可以看到。

模板,正如其他答案中所建议的,可能是最好的答案(我写了一个早期的、古怪的模板模块,名为,但其他答案中建议的现代成熟模块可能会让你更快乐;-)

然而,尽管我上次使用它已经有很长一段时间了,但我很怀念这种方法,它大体上是一种“反向模板”(在Python中嵌入HTML生成,而不是像普通模板那样使用viceversa)。也许你应该看看,看看你是否更喜欢它;-)是一个Python库,用于直接在代码中创建HTML文档和片段,而无需使用模板。您可以使用以下内容创建一个简单的图像库:

导入全局
来自进口单证
从.tags导入*
photos=glob.glob('photos/*.jpg')
将文档(title='Photos')作为文档:
h1(“照片”)
对于照片中的路径:
div(img(src=path),\u class='photo')
将open('gallery.html','w')作为f:
f、 写入(doc.render())
输出:

<!DOCTYPE html>
<html>
  <head>
    <title>Photos</title>
  </head>
  <body>
    <h1>Photos</h1>
    <div class="photo">
      <img src="photos/IMG_5115.jpg">
    </div>
    <div class="photo">
      <img src="photos/IMG_5117.jpg">
    </div>
  </body>
</html>

照片
照片

免责声明:我是《Python是一种包含电池的语言》一书的作者。那么为什么不使用
xml.dom.minidom

输入导入列表中的

从xml.dom.minidom导入getDOMImplementation,文档
def getDOM()->文档:
impl=getdominimplementation()
dt=impl.createDocumentType(
“html”,
“-//W3C//DTD XHTML 1.0 Strict//EN”,
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd",
)
返回impl.createDocument(“http://www.w3.org/1999/xhtml“,”html“,dt)
def ul(项目:列表[str])->str:
dom=getDOM()
html=dom.documentElement
ul=dom.createElement(“ul”)
对于项目中的项目:
li=dom.createElement(“li”)
li.appendChild(dom.createTextNode(项))
ul.儿童(李)
html.appendChild(ul)
返回dom.toxml()
如果名称=“\uuuuu main\uuuuuuuu”:
打印(ul([“第一项”、“第二项”、“第三项”]))
产出:


  • 第一项
  • 第二项
  • 第三项

该界面看起来不像pythonic,但如果您是一名前台开发人员,并且使用了JavaScript DOM操作,那么它更符合您的想法,是的,它使您免于添加不必要的依赖项。

自切片面包以来最好的事情。20年来,我一直在尝试同样的想法,在C、Lisp和IIRC(shudder)PHP中有错误的开始,但我的半生不熟的解决方案总是比在代码(PHP)之间撒HTML或打印HTML更痛苦。主图书馆对我来说只是点击。对我来说,Dominate感觉非常lisp-y,因为您总是听说lisp非常适合将语言本身作为特定领域的语言使用。事实证明Python在这方面也很好!我点击了一下,似乎吉诃德还在。例如,按钮生成器的描述如下:。总而言之,似乎你可以把支配图书馆和吉诃德放在同一个大类中。但吉诃德似乎也做了很多其他事情,与服务器相关的事情。我喜欢你的术语“反向模板”-我将开始用它来描述一般技术!