如何快速提取Github的代码?使用LangChain的GitLoader!

提取Github代码一般有两种方式:

  1. 使用 git clone 命令,直接下载到本地后复制;
  2. 直接在网页端查看 raw 文件,复制到本地。

但是,这两种方式都不够快,特别是需要 ChatGPT 来交互时,涉及大量的代码,需要更快的方式来提取 Github 代码。

这里介绍一种更快的方式,使用 langchainGitLoader,快速把代码扒下来。

以下是步骤:

第一步 安装langchain库

pip install langchain
from langchain.document_loaders import GitLoader
Python


第二步 连接Github仓库

loader = GitLoader(
    clone_url = 'https://github.com/openai/openai-cookbook.git',
    repo_path="Github_files"
    branch='main')
data = loader.load()
Python

代码说明:
1. clone_url 是 Github 的网址,上面网址是 openai 的 cookbook,可以换成其他的 Github 网址;
2. repo_path 是本地文件夹的路径,如果保持默认,即下载到当前文件夹里面的”Github_files”文档;
3. branch 是 Github 的分支,一般为“mian”或者“master”。


第三步 查看文件及代码

len(data)
for doc in data:
    filename = doc.metadata['file_name']
    print(filename)
print(data[20].page_content)
Python

代码说明:
1. len(data)是查看文件夹里面有多少个文件,除图片外,每个文件都是一个document;
2. for 循环是查看每个文件的名称;
3. data[20].page_content是查看第20个文件的代码。具体数字可以自己根据文件夹里面的文件数量来调整。


彩蛋:提取.ipynb文件

很多人不知道怎么快速提取.ipynb文件的 python 代码,这里提供一个方法。

其实.ipynb文件本质上是 json 格式,我们可以先将其转为 json 格式,然后再提取代码。

刚好,openai cookbook 第20个文档是.ipynb文件,我们拿来示范一下。

首先将字符串转为 json 格式:

import json
json_file = json.loads(data[20].page_content) #将str转为json
json_file
Python

遍历每个 cell,如果是 code 类型,就将代码提取出来:

code_cells = []
for cell in json_file['cells']:
    if cell['cell_type'] == 'code':
        code = ''.join(cell['source'])
        code_cells.append(code)
        print(code)
Python

这样我们就可以快速提取里面所有的代码了。

如果要把代码保存为 python 文件呢?这里也提供一个方法:

# 设置保存的文件名
file_name = 'output.py'

# 将代码写入文件
with open(file_name, 'w'as f:
    for code in code_cells:
        f.write(code)
        f.write('\n')

print(f"代码已保存到文件: {file_name}")
Python

这样,代码就保存到了 output.py 文件里面了。


彩蛋plus:查看Github文件树

还有更直观查看 Github 文件夹的方法,那就是查看文件树。

首先安装文件树的库 tree 。以下命令需要进入命令行,用 homebrew 工具安装,如果没有 homebrew,则先安装 homebrew。

brew install tree
Bash

tree 命令查看:

tree github_files
Bash

效果如下:

好了,这就是如何快速提取 Github 代码的方法,希望对你有帮助。


【关注我】

凡学子——学习者、分享者、AI技术推广者、自我提升践行者

微信公众号:凡学子   ID:weixinerzuo

推特账号:凡学子 https://twitter.com/lamhiuzhong

个人网站:www.linxiaozhong.club


最近更新:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注