Intereting Posts
Как разрешить ошибку Git: «Не удалось создать временный репозиторий» Как удалить последние два коммита в git и получить мой commit 1 как изменения в рабочем каталоге? Удалите коммит из github remote с номером фиксации Как я могу указать, когда в PR на GitHub была добавлена ​​веха? Репозиторий Git в GitBlit возвращает следующую ошибку: «Запрошенный URL возвратил ошибку: 403» Проверка подлинности LibGit2Sharp на стороне сервера git – установить KDiff3 как defaultetoolool Что представляют собой статичные / нестатические файлы в SourceTree (с концентратором Git), и я могу выборочно нажимать filles? Есть ли $ HeadURL $ эквивалент для git? CSS неправильно загружается на Jekyll (GitHub) Git diff считает, что окончание строк – LF, когда EOL установлен в CRLF в .gitattributes Git вытащить удаленные незафиксированные изменения Как скомпилирован проект github и организовано в основном проект C на Github Как различать определенные коммиты против хозяина как получить список коммитов, которые присутствуют в ветке 1, но не в ветке 2

Как загрузить и записать файл из Github с помощью запросов

Допустим, есть файл, который находится в репозитории github:

https://github.com/someguy/brilliant/blob/master/somefile.txt

Я пытаюсь использовать запросы для запроса этого файла, записать его содержимое на диск в текущем рабочем каталоге, где он может быть использован позже. Сейчас я использую следующий код:

import requests from os import getcwd url = "https://github.com/someguy/brilliant/blob/master/somefile.txt" directory = getcwd() filename = directory + 'somefile.txt' r = requests.get(url) f = open(filename,'w') f.write(r.content) 

Несомненно, уродливое, а главное, не работает. Вместо ожидаемого текста я получаю:

 <!DOCTYPE html> <!-- Hello future GitHubber! I bet you're here to remove those nasty inline styles, DRY up these templates and make 'em nice and re-usable, right? Please, don't. https://github.com/styleguide/templates/2.0 --> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Page not found &middot; GitHub</title> <style type="text/css" media="screen"> body { background: #f1f1f1; font-family: "HelveticaNeue", Helvetica, Arial, sans-serif; text-rendering: optimizeLegibility; margin: 0; } .container { margin: 50px auto 40px auto; width: 600px; text-align: center; } a { color: #4183c4; text-decoration: none; } a:visited { color: #4183c4 } a:hover { text-decoration: none; } h1 { letter-spacing: -1px; line-height: 60px; font-size: 60px; font-weight: 100; margin: 0px; text-shadow: 0 1px 0 #fff; } p { color: rgba(0, 0, 0, 0.5); margin: 20px 0 40px; } ul { list-style: none; margin: 25px 0; padding: 0; } li { display: table-cell; font-weight: bold; width: 1%; } #error-suggestions { font-size: 14px; } #next-steps { margin: 25px 0 50px 0;} #next-steps li { display: block; width: 100%; text-align: center; padding: 5px 0; font-weight: normal; color: rgba(0, 0, 0, 0.5); } #next-steps a { font-weight: bold; } .divider { border-top: 1px solid #d5d5d5; border-bottom: 1px solid #fafafa;} #parallax_wrapper { position: relative; z-index: 0; } #parallax_field { overflow: hidden; position: absolute; left: 0; top: 0; height: 370px; width: 100%; } 

и т.д.

Содержимое из Github, но не содержимое файла. Что я делаю не так?

    Содержимое указанного файла включено в возвращаемые данные. Вы получаете полное представление GitHub об этом файле, а не только содержимое.

    Если вы хотите скачать только файл, вам нужно использовать ссылку Raw в верхней части страницы, которая будет (для вашего примера):

     https://raw.github.com/someguy/brilliant/master/somefile.txt 

    Обратите внимание на изменение имени домена, и blob/ часть пути исчезла.

    Чтобы продемонстрировать это с помощью requests репозитория GitHub:

     >>> import requests >>> r = requests.get('https://github.com/kennethreitz/requests/blob/master/README.rst') >>> 'Requests:' in r.text True >>> r.headers['Content-Type'] 'text/html; charset=utf-8' >>> r = requests.get('https://raw.github.com/kennethreitz/requests/master/README.rst') >>> 'Requests:' in r.text True >>> r.headers['Content-Type'] 'text/plain; charset=utf-8' >>> print r.text Requests: HTTP for Humans ========================= .. image:: https://travis-ci.org/kennethreitz/requests.png?branch=master [... etc. ...] 

    Вам нужно запросить необработанную версию файла с https://raw.github.com .

    Увидеть разницу:

    https://raw.github.com/django/django/master/setup.py vs. https://github.com/django/django/blob/master/setup.py

    Кроме того, вы должны, вероятно, добавить / между вашим каталогом и именем файла:

     >>> getcwd()+'foo.txt' '/Users/burhanfoo.txt' >>> import os >>> os.path.join(getcwd(),'foo.txt') '/Users/burhan/foo.txt'