궁금증 연구소

안녕하세요. 궁금증연구소 입니다.

오늘 포스팅 주제는 "Github 에서 일부파일만 다운받는 방법은?" 입니다.

 

판다스 인 액션

요즘 파이썬의 판다스 전처리 연습을 열심히 하느라. 판다스 인 액션이라는 교재를 공부하고 있습니다.

https://github.com/paskhaver/pandas-in-action

 

GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action

Complete source code (datasets and Jupyter Notebooks) for Pandas In Action - GitHub - paskhaver/pandas-in-action: Complete source code (datasets and Jupyter Notebooks) for Pandas In Action

github.com

요 주소에 가면 예제파일들을 받아볼 수 있습니다. 

 

데이터 전처리를 위해서 csv 데이터 파일을 raw 데이터를 복사하여 vs-code에 일일히 파일을 만들어주는 식으로 파일을 가져왔습니다. git-clone을 사용해도 되지만, 한꺼번에 데이터가 모두 들어와서 쓸데없는 폴더 만들어지는게 싫어서 그냥 이렇게 했는데, 문득...깃허브의 개별 폴더 속의 특정 파일만 다운로드 받는 방법이 궁금해 졌습니다.

 

curl -LJO https://raw.githubusercontent.com/paskhaver/pandas-in-action/master/chapter_08_reshaping_and_pivoting/minimum_wage.csv

가장 쉬운 방법은 요런식으로 curl 명령어를 사용하면 됩니다.

 

curl -LJO https://raw.githubusercontent.com/{사용자 이름}/{repository}/{ 분기}/{경로}/{파일 이름}

 

 

 

 

 

 

그런데 이방법을 쓰면 csv 파일이 100개면 100문장을 써주어야 합니다..ㅠ

 

제가 원하는 다운로드 파일은 4개이니

 

curl -LJO https://raw.githubusercontent.com/paskhaver/pandas-in-action/master/chapter_08_reshaping_and_pivoting/minimum_wage.csv
curl -LJO https://raw.githubusercontent.com/paskhaver/pandas-in-action/master/chapter_08_reshaping_and_pivoting/population.csv
curl -LJO https://raw.githubusercontent.com/paskhaver/pandas-in-action/master/chapter_08_reshaping_and_pivoting/state-abbrevs.csv
curl -LJO https://raw.githubusercontent.com/paskhaver/pandas-in-action/master/chapter_08_reshaping_and_pivoting/state-population.csv

 

요렇게 하면 다운로드가 되겠군요..

 

챗지피티 문의

*.csv 형태로 적어보았으나, 에러가 나길래, 찾아보았더니, curl 명령어에 * 와일드카드는 유닉스 시스템에서만 가능하고, 윈도우에서는 적용이 안되는 군요..-_-;

 

for file in $(curl -s https://api.github.com/repos/{username}/{repository}/contents/{directory} | grep -oP '(?<="download_url": ")[^"]*(?=\", "name")' | grep '.csv'); do curl -LOk $file; done

 

이런식으로 배쉬의 for문을 써도 되는데... 이것까지 쓸빠에.. 걍 git-clone을 활용하시길..

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading