목차

묻지도 따지지도 말고! 파이썬 요리책

요리책은 요리에 쓰는 거지만, 은근히 프로그래밍에도 많이 사용됩니다. 묻지도 따지지도 않고 패턴화된 일을 할 때가 있습니다. 그런데 그것이 가끔씩 있는 일이다보니 자주 잊어버리는 때도 많습니다. 이럴 때 요리 레시피를 적듯 '코드 레시피'를 적어 두면 편리할 것입니다.

여기는 이러한 코드 레시피를 모아둔 파이썬 요리책 문서입니다.

파일과 디렉토리에 대한 관리

디지털 카메라 사진들을 연/월별로 분류하기

디지털 카메라의 각각 파일에는 보통 'Exif 정보'란 것이 있습니다. 이 정보에는 사진에 대한 '메타데이터(metadata)'를 담고 있습니다.메타데이터는 어떤 자료를 설명하기 위해 추가되는 부가적인 자료들을 말합니다. 디지털 사진을 찍게 되면 보통 사진의 영상외에도 이 사진이 언제 (혹은 어디서 까지도) 어떻게 찍혔는지에 대한 자료들이 같이 이미지 파일에 저장됩니다. 이런 자료들을 저장하기 위한 포맷을 일컬어 Exif라고 합니다.

이 Exif 자료를 이용한다면 한 폴더에 왕창 쌓여있는 사진들을 연도별로, 월별로 분류할 수 있습니다. 저는 모 클라우드 저장소에 스마트폰을 이용해 찍은 사진을 백업했는데, 알아서 월별로 사진을 구분해 폴더별로 정리하는 것을 보았습니다. 나름 정리가 되어 괜찮다고 생각했는데요, 파이썬을 이용해 이 기능을 흉내내 보겠습니다.

프로그램의 동작 얼개는 간단합니다.

  1. 사진이 있는 디렉토리를 입력으로 줍니다. 하위 디렉토리는 존재하지 않고 편평하게 사진 파일만 수두룩하게 있다고 가정합니다. 그리고 사진에는 모두 Exif 정보가 있다고 가정합니다. 만일 정보가 없다면 건너뜁니다.
  2. 각각의 사진 파일의 Exif 정보 중, 사진이 촬영된 시간을 읽어냅니다.
  3. 사진이 촬영된 연도와 월을 추출해 그 연도의 그 월 폴더를 만듭니다. 이미 만들어져 있으면 관계없습니다.
  4. 파일을 해당 폴더로 이동합니다.
  5. 모든 사진 파일에 대해 작업을 반복합니다.

파일 내부의 특정 문자 패턴 치환하기

어떤 분이 제게 파일의 내부의 특정 단어를 다른 단어로 바꾸는 프로그램에 관한 질문으로 이메일로 보내 주셨습니다. 이런 프로그램은 사람마다 조금 다르겠지만 대개 평소에 쓸 일은 많지 않아 보입니다. 하지만 왠지 있으면 좋을 것 같습니다. 왠지 쓸모없지만 있어도 나쁘지 않은 프로그램, 딱 제 스타일입니다 :) 만들어 보도록 하겠습니다.

여러 폴더를 각각의 이름으로 압축하기

파이썬으로 압축을 할 수도 있고 다시 풀 수도 있습니다. 사실 탐색기에서 마우스 버튼으로 클릭하면 한 방에 해결되는 일인데, 굳이 파이썬을 쓸 일은 없죠.

하지만 제게 이런 경우가 있었더랬습니다. 압축 파일을 풀었는데 폴더가 수십개였습니다. 폴더는 어떤 규칙을 가진 연속적인 이름을 가져야 하는데, 몇몇 폴더에 실수가 있어 이름으로 정렬을 했을 때 제대로 정렬이 되지 않았습니다. 어쨌든 폴더 이름이 잘못된 몇 개 정도는 쉽사리 수정할 수 있었습니다.

하지만 저는 폴더별로 하나씩 압축 파일을 만들고 싶었습니다. 그러려니 일일이 폴더마다 오른쪽 마우스를 클릭해 압축 메뉴를 눌러 압축을 해야 하더군요. 꽤 번거로웠지요. 다 정해진 규칙이 있는데 규칙대로 하면 한 번에 프로그래밍을 할 수 있었을 텐데 하고 고민했던 적이 있었습니다. 파이썬을 몰랐을 때 말이죠. 이제는 만들어 봅니다. 한 폴더 내 여러 폴더를 각각의 이름으로 압축하기!

웹 관련

인터넷 익스플로러 뒤에서 조종하기

매번 웹브라우저로 정해진 작업을 수행하는 분 있으신가요? 희소식을 전해 드립니다. 파이썬을 조금만 배워보세요! 그 지루한 작업을 한방에 해결해 드릴 수도 있습니다. 우선 인터넷 익스플로러부터 조종해볼까요?

멋진 파이썬 예제들