首页 > 解决方案 > 如何从 Github 的源代码文件中只获取一些行?

问题描述

如何获取指向源代码特定行的 URL 指向的代码片段(如下所示)?

网址https ://github.com/buckket/twtxt/blob/6c8ad8ef3cbcf0dd335a12285d8b6bbdf93ce851/twtxt/cache.py#L44-L51

代码片段:

    def from_file(cls, file, *args, **kwargs):
        """Try loading given cache file."""
        try:
            cache = shelve.open(file)
            return cls(file, cache, *args, **kwargs)
        except OSError as e:
            logger.debug("Loading {0} failed".format(file))
            raise e

标签: githubgithub-api

解决方案


无法使用 GitHub API 从文件中仅获取选定的行。

URL 中之后的部分#称为片段,它不会通过网络发送到远程服务器。相反,它由用户代理(例如,网络浏览器)解释以选择资源(网页)的特定位置或部分。这部分完全是在客户端完成的,当通过 GitHub Web 界面完成时,是用 JavaScript 实现的。因此,服务器永远不会知道您只请求了文件的一部分。

GitHub API 不只提供选定的行,因为通常这比只提供整个文件更昂贵且更难实现。例如,有人可能违反最佳实践,签入了带有 CRLF 行结尾的文件,这需要进行特殊解析和处理。此外,没有有意义的方式来表示 PDF 或 JPEG 文件中的行或任何类型的部分数据。除了从存储库中读取整个文件之外,所有这些情况都需要特殊的解析和评估。简单地把整个文件交给你,让你决定如何在程序中解析或解释它,效率要高得多。


推荐阅读