아래와 같은 텍스트 파일이 있다.
파이썬으로 아래 이미지들을 다운로드해서 저장할 것이다.
앞에 숫자는 행번호이고 뒤에는 콤마로 구분된 n개의 이미지 path가 있다.
1_1.jpg, 2_1.jpg, 2_2.png, 2_3.gif, 3_1.jpg, 3_2.jpg 이런식으로 저장할 것이다.
1,/image/img1.jpg 2,/image/img2.jpg,/image/img3.png,/image/img4.gif 3,/image/img5.jpg,/image/img6.jpg |
1. 이미지 주소를 이미지파일로 다운로드 하는 함수이다.
import os import sys import urllib def download_photo(img_url, filename): file_path = "%s%s" % ("/Users/marobiana/Documents/pythonTest/", filename) downloaded_image = file(file_path, "wb") image_on_web = urllib.urlopen(img_url) while True: buf = image_on_web.read(100000000) if len(buf) == 0: break downloaded_image.write(buf) downloaded_image.close() image_on_web.close() return file_path # call download_photo("http://marobiana.com/image/test.jpg", "test.jpg") |
image_on_web.read(100000000) 에서 안에 들어가는 숫자는 한번에 읽어올 데이터의 사이즈이다.
숫자를 적게 하면, 이미지 하나를 불러오는데 사이즈만큼 나눠서 받아오게 된다.
img_url은 여기서 가라 주소로 사용됐음.
어쨌든.. 저런형식으로 콜하면 test.jpg라는 이름으로 저장이 되어 있을 것이다.
내가 지정한 file_path에.
2. 이번에는 응용을 해서, 맨 위에서 작성된 텍스트파일을 읽어서
일괄적으로 저장하는 함수도 하나 만들어보았다.
def make_img_url(): f = file('format.txt'); # 맨 위에있는 텍스트 파일 line = f.readline(); while line: line = line.replace("\n", ""); # 엔터마다 \n이 붙어있으므로 공백으로 치환 result = line.split(",") i = 0; # 파일 이름 뒤에 몇번째 이미지인지 붙이기 위한 변수 ex) 2_1.jpg for value in result: i += 1 if (i == 1): result_image_name = value print result_image_name continue
extention = value.split(".")[-1]; # 확장자 추출. # 1번에서 만든 함수 call download_photo(value, "%s_%d.%s" % (result_image_name, i - 1, extention)) line = f.readline(); # call make_img_url() |
- python에는 i++ 연산자가 없어서 i += 1 같이 썼다.
- extention = value.split(".")[-1]; # 확장자 추출.
만약 /image/img1.jpg
이 값을 split했다면,
/image/img1 과 jpg 가 배열에 들어있을 것이다.
확장자 추출을 위해 배열의 맨 마지막 값을 꺼내고 싶다면.
arr[-1] 처럼 쓰면 배열의 맨 뒤에서 첫번째 값을 가져오겠다 라는 뜻이 된다.
arr[-2] 를 쓴다면 배열의 뒤에서 두번째 것을 가져오겠다라는 뜻이 된다.
- 참고로, 탭 구분이 엄청 중요한데, 탭이 미세하게 달라지면 에러를 뱉으니..
자꾸 에러가 발생하면 탭을 모두 지웠다가 다시 띄워봐야한다.
'개발 > ETC' 카테고리의 다른 글
[java] selenium으로 Chrome headless 사용해보기 (0) | 2018.01.19 |
---|---|
자주 쓰는 이클립스 단축키 vs 인텔리제이 단축키 (3) | 2017.06.16 |
대만 번체, 일본어 엑셀에서 CSV로 안깨지게 저장하는법 (3) | 2014.03.13 |
텍스트 파일 읽어오기 - 파이썬(python) (0) | 2014.01.11 |
텍스트 파일 읽어오기 - 펄(perl) (0) | 2014.01.11 |