2020-08-25 13:38:01

어떤 이미지 데이터셋 내 이미지들의 이름이 0000001.bmp, 0000002.bmp,..., 0000010.bmp,..., 0000100.bmp,...,0001000.bmp와 같을 때 for문을 통해 각 이미지의 이름을 읽으려면 어떻게 해야할까요? 

 

이 경우에는 숫자가 모두 일곱 자리라는 규칙을 갖고 있습니다. 그리고 이미지의 번호 앞에는 모두 0이 붙죠. 그렇기 때문에 문자열의 format 함수를 이용하면 이러한 숫자들을 문자열의 형태로 만들어낼 수 있습니다. 

 

1
2
3
4
for i in range(1000):
    img_num = "{:07d}".format(i+1)
    img_name = img_num + ".bmp"
    print(img_name)
cs

 

이 코드를 실행하면, 다음과 같이 이미지명이 잘 생성된 것을 확인하실 수 있습니다. 

 

 

이것을 응용해서 만약에 자리수가 5이고 00001.jpg부터 00500.jpg까지라면 다음과 같이 코드를 수정하시면 됩니다. 

 

1
2
3
4
for i in range(500):
    img_num = "{:05d}".format(i+1)
    img_name = img_num + ".jpg"
    print(img_name)
cs

 

세 군데만 바꿨습니다. 어디 어디가 바뀌었는지 아시겠죠? 첫번째 행에서 1000을 500으로, 두번째 행에서 :07d를 :05d로, 세번쨰 행에서 .bmp를 .jpg로 바꿨습니다. 이 코드를 실행하면 다음과 같이 각 이미지 이름을 문자열의 형태로 잘 생성한 것을 확인하실 수 있습니다. 

 

 

 

b스카이비전의 추천글

[python] 문자열 포맷팅이란? 3가지 문자열 포맷팅 방법들