簡體   English   中英

讀取並上傳到 GitHub 非 UTF-8 文件 Python

[英]Read and upload to GitHub non UTF-8 file Python

我有將 SQlite3 文件上傳到 GitHub(模塊 PyGithub)的代碼。

import github
with open('server.db', 'r') as file:
        content = file.read()
g = github.Github('token')
repo = g.get_user().get_repo("my-repo")
file = repo.get_contents("server.db")
repo.update_file("server.db", "Python Upload", content, file.sha, branch="main")

如果您通過文本編輯器打開此文件,則會有一些字符未包含在 UTF-8 中,因為這是一個數據庫文件。 我收到此錯誤:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd9 in position 99: invalid continuation byte

我該如何解決?

也許我可以將文件上傳到 GitHub,這樣它就不是基於文本的,比如 PNG?

我用這個。

f = open("yourtextfile", encoding="utf8")
contents = get_blob_content(repo, branch="main",path_name="yourfile")
repo.delete_file("yourfile", "test title", contents.sha)
repo.create_file("yourfile", "test title", f.read())

而這個定義

def get_blob_content(repo, branch, path_name):
    # first get the branch reference
    ref = repo.get_git_ref(f'heads/{branch}')
    # then get the tree
    tree = repo.get_git_tree(ref.object.sha, recursive='/' in path_name).tree
    # look for path in tree
    sha = [x.sha for x in tree if x.path == path_name]
    if not sha:
        # well, not found..
        return None
    # we have sha
    return repo.get_git_blob(sha[0])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM