Python自带了一个很简单的HTTP Server,就是python -m http.server 8000
这个,很方便。组里面同学基于这个改出来一个专门用来看图的HTTP Server,但我觉得不太好用+看不懂+多文件不优雅。于是就自己动手重新写了一个。
大致思路是,找到Python官方的SimpleHTTPServer进行魔改。
首先确定我想要什么功能:
- 快速的文件夹跳转,就像SimpleHTPServer那样。这样的话我就可以将想要展示的图片放在某个目录后,配置脚本默默运行了——反正能在网页上点链接,我就不用记目录名字了
- 只显示图片,最多了再显示一下文件夹以供快速跳转。毕竟,这个脚本定位是「图片服务」
- 文件夹对比,最好是多路文件夹对比。这样的话可以比较方便地看不同算法的效果
大致就这么多。
开工。
首先对SimpleHTTPServer抽丝剥茧,看看do_GET
方法是怎么做的,然后将发送header的部分独立出来。
然后,将原来的模板改造成自己的模板。
最后,实现上述想要的功能。
第一个版本使用的是单线程的HTTPServer,第二个版本开始就使用ThreadingHTTPServer了,速度快很多很多。但是ThreadingHTTPServer
这个东西只有在Python3.7.4以上的版本才有……按照自己「新版本爱好者」的习惯,就不做向下兼容了。
第一个版本实现二路文件夹比较,写得较为麻烦,想着改造成多路文件夹比较的话会写得更麻烦。但实际上做下来,也就半小时就改出来了。
然后就是,路径,遇到比较多的坑。所以这里全部用了绝对路径,然后显示的时候用相对路径——反正就是,路径方面,需要不停地related_to()
,显得比较恶心。除此之外,related_to()
之后,还要按照HTML的东西对路径做各种我看不懂的转义(嗯,都是抄来的),也使代码显得很不优雅。
下一步,准备写一个supervisior配置文件,实现开机自动运行。
于是,Code呢?
Gist:传送门
发表回复