Bash o Python: ¿cómo download un solo file especificado de Github?

Necesito escribir un script que periódicamente descargue un file específico de mi count de Github. He visto esta página de Github que parece ser lo que estoy buscando, pero no he podido hacer que funcione. Quizás esto se deba a que realmente no entiendo qué es el campo "usuario" (en lugar de "nombre de usuario"). Si alguien tuvo éxito con este método, ¿podría darnos un ejemplo? Además, si utilizó otro método, ¿podría informarme? ¡Gracias por adelantado!

Depende del tipo de file. Para los files no binarys, puede get la url del file haciendo clic en el button "raw" al lado de "edit" cuando tenga el file abierto en github. Entonces, puedes simplemente usar curl o wget para downloadlo.

Aquí hay una foto para aclarar las cosas:

enter image description here

Luego copy la url:

enter image description here

Suponiendo que el file esté sincronizado, escribiría un script bash que fuera más o less así:

 #!/bin/bash # file: ./getFromGit # cd into git-synced directory and update the file cd /directory/path/ git checkout origin/branch /path/to/file/in/dirStructure 

Entonces

 $ chmod u+x ./getFromGit $ cp getFromGit /usr/local/bin # or wherever your executables like git are 

Ahora, desde cualquier directory que desee, puede llamar a getFromGit y obtendrá el file que desea.

Consulte este tutorial de Jason Rudolph para get más información sobre cómo verificar un solo file de una twig determinada con git.

Si no está sincronizado, estoy de acuerdo con @jh314: solo usa wget

Esto debería funcionar (no probado, pero debería darle una idea):

 import time import subprocess import sys import shlex if __name__ == "__main__": cmd = ("curl -L" if sys.platform == "darwin" else "wget") url = ...... cmd += " {0} -o {1}".format(url, url.split("/")[-1]) p = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) (stdout, stderr) = p.communicate() if stderr: raise Exception(stderr) time.sleep(...) # Call another instance of this script subprocess.Popen(['python', sys.argv[0]]) 

Volverá a llamar al script una vez transcurrido el time y saldrá. Mientras el command finalice sin un error, seguirá llamándose a sí mismo nuevamente.