是否可以在python中使用http.server提供的目录中显示文件大小?

时间:2018-05-04 21:02:06

标签: python python-3.x simplehttpserver

我使用

服务了一个目录
python -m http.server

效果很好,但它只显示文件名。是否可以显示创建/修改日期和文件大小,就像在ftp服务器中看到的那样?

我查看了模块的文档,但找不到与之相关的任何内容。

谢谢!

1 个答案:

答案 0 :(得分:2)

http.server用于死亡简单的用例,并用作示例代码。 1 这就是文档链接到源的原因。

这意味着,根据设计,它没有很多配置设置;相反,您可以通过读取源并选择要覆盖的方法来配置它,然后构建一个执行该操作的子类。

在这种情况下,您要覆盖的是list_directory。您可以看到基类版本的工作原理,并编写自己的版本来执行其他操作 - 使用scandir代替listdir,或者只在每个文件上调用stat,然后弄清楚如何将结果塞进定制的HTML中。

由于除了作为学习练习之外没有什么意义,我不会给你完整的代码,但这里有一个骨架:

class StattyServer(http.server.HTTPServer):
    def list_directory(self, path):
        try:
            dirents = os.scandir(path)
        except OSError:
            # blah blah blah
        # etc. up to the end of the header-creating bit
        for dirent in dirents:
            fullname = dirent.path
            displayname = linkname = dirent.name
            st = dirent.stat()
            # pull stuff out of st
            # build a table row to append to r

<子> 1。虽然它是用于构建服务器的过时和笨重方式的示例代码,但也许应该作为示例代码来理解您可能赢得的遗留代码并且需要查看但是以防万一...&#34;。