You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyGitHub脚本无报错未更新仓库,修改后出现文件不匹配错误

问题解决方案

核心错误原因

你在repo.update_file()中传入的第一个参数是本地文件的全路径,但GitHub API要求的是仓库内的相对路径(和get_contents()里的路径一致),这直接导致了「文件不匹配」错误。另外,未指定文件编码可能引发隐性的内容差异,也是潜在问题。

修改后的脚本

from github import Github

# 初始化GitHub客户端
g = Github('你的token')
repo = g.get_user('你的用户名').get_repo('你的仓库名')

# 获取仓库中目标文件的最新信息(确保SHA是最新的)
file_path_in_repo = 'src/history.csv'
contents_h = repo.get_contents(file_path_in_repo)

# 本地文件路径
local_file_path = '{full path}/src/history.csv'

# 读取本地文件,指定编码避免乱码/内容差异
with open(local_file_path, "r", encoding="utf-8") as file:
    new_h_content = file.read()

# 更新仓库文件,注意第一个参数用仓库内的相对路径
repo.update_file(
    path=file_path_in_repo,
    message="自动更新history.csv",
    content=new_h_content,
    sha=contents_h.sha,
    branch='main'
)

额外注意事项

  • 确保你的GitHub Token拥有仓库的写入权限(repo权限),否则会静默失败。
  • 如果脚本运行间隔较长,建议在更新前重新调用get_contents()获取最新的SHA值,避免因仓库文件被其他方式修改导致的SHA不匹配错误。
  • 若有第二个CSV文件,只需复制上述逻辑,替换对应的文件路径即可。

内容的提问来源于stack exchange,提问作者kqd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:27:03