2017-02-07 23 views
0

У меня есть gist (csv format), который обновляется ежедневно и содержит n ревизий. Каждая информация ревизии отличается друг от друга.Сохраните файл csv с другим именем из ревизий gist и покажите разницу

мне нужно знать разницу между каждой версии, поэтому я использовал GIST API, чтобы получить изменения, которые могут быть сохранены в формате CSV

Мое требование:

  1. Как я могу загрузить и сохранить каждый URL csv ie example.csv с другим именем?
  2. Как можно получить разницу в разностях?

Удалено здесь, как загрузить файл. Я попытался с urlib просить pypackages, но я не мог понять, где я нахожусь behind.Thanks

gist_ids = 'abc' 

def main(): 
    gh = github3.login(
     token=os.environ.get('my_token'), 
     url=' ') 
    my_gist = gh.gist(gist_ids) 
    for gist_commit in my_gist.commits(): 
     resp_str= gist_commit.get_gist().as_json() 
     resp_json = json.loads(resp_str) 
     resp_url = resp_json['files']['example.csv']['raw_url'] 
    print resp_url 

if __name__ == '__main__': 
    main() 

O/р: У меня есть 4 изменения, так что отображается 4 URLs https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/5c058121cc4f289773b7013208ca5c5b0d97ba33/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/cfb04e18bdf18bf7ab0b708951f62d2095c49f7d/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/a20174f568129df4348d355eb0d6e378db7fa646/example.csv https://github.com/gist/eec70654d178a8e1fe497d0bce94e0db/raw/137c57ef411067564341d389571dab2da070c828/example.csv

ответ

0

Итак, вы слишком усложняете некоторые вещи. Каждая из объектов, возвращаемых github3.py, имеет нужную вам информацию.

Я принял ваш код ниже и немного изменил его. Резюмируя

  1. Я удалил использование as_json(), так как нет никакого смысла принуждать данные и из строки. Если вам нужен словарь, вы могли бы использовать as_dict().

  2. Далее я использовал историю фиксации gist и использовал это, чтобы найти файл для каждой ревизии.

  3. Использование объекта GistHistory и реальный объект GistFile, я построить свой файл, чтобы сохранить их, так это они будут выглядеть 5c058121cc4f289773b7013208ca5c5b0d97ba33-example.csv

  4. Наконец, я использую объект GistFile на самом деле получить содержимое файла и сохранить его на диск

Надеюсь, это поможет.

gist_ids = 'abc' 

def main(): 
    gh = github3.login(
     token=os.environ.get('my_token'), 
     url=' ') 
    my_gist = gh.gist(gist_ids) 
    for gist_commit in my_gist.commits(): 
     gist = gist_commit.get_gist() 
     gist_file = [file for file in gist.files() 
        if file.filename == 'example.csv'] 
     filename = '{}-{}'.format(gist_commit.version, gist_file.filename) 
     with open(filename, 'wb') as fd: 
      fd.write(gist_file.content()) 
     print filename 
+0

Спасибо огромное. Есть ли способ получить разницу между каждой версией с помощью github3 или инструмента thirdparty. потому что у меня есть 1000 csv ревизий. –

+0

Таким образом, API GitHub (и, расширение, github3.py) не предоставляет фактических различий. Он предоставляет статистику различий, но не отличается. Сторонним инструментом, который вы можете использовать для этого, является командная строка 'diff'. Вы также можете использовать Python 'difflib': https://docs.python.org/2/library/difflib.html –