파이썬 공부를 하던 중, 꽤나 유용한 라이브러리를 발견했다. 필자는 코딩 중, 이미지 파일 혹은 파일의 목록들을 PDF 파일로 변환할 필요가 있었는데, 서드파티 라이브러리를 찾아보니 엄청 편리한 게 있었다.
img2pdf 설치
라이브러리의 이름도 매우 직관적이게 'img2pdf'이다. 해당 라이브러리는 파이썬 3.x 이상에서만 지원함으로 유의하도록 하고, 설치 방법은 아래의 명령어를 쳐주면 된다.
인자를 위한 위한 경로 값 전달
파일을 변환하는 메소드이기 때문에 당연히 경로 및 파일 이름을 인자로 받아야 한다. 그러므로 경로 등에 접근할 수 있는 기본 라이브러리인 'os' 등과 함께 사용할 필요가 있다. 간단하게만 알아보자.
글로벌 변수 __file__
해당 코드가 저장된 파일의 이름을 반환한다.
ex) code.py
os.path.realpath("code.py")
파일 이름을 인자로 주면 해당 파일의 절대 경로를 반환하여 준다.
ex) C:\Users\code.py
os.path.dirname("C:\Users\code.py")
파일의 경로를 인자로 주면 해당 파일이 속한 디렉터리의 경로를 반환하여 준다.
ex) C:\Users
os.listdir("C:\Users")
디렉터리 경로를 인자로 주면 해당 디렉터리 내에 존재하는 모든 파일 및 디렉터리를 리스트로 반환한다.
ex)["code.py","qwe.jpg","asd.jpg","zxc.jpg"]
예제 코드
img2pdf를 사용할 준비는 끝났으니 예제 코드를 사용하여 직접 실행시켜 보자.
먼저 outpath 1,2,3 변수들에 주목하자. 주석에도 설명되어 있듯이 세 변수의 값은 완전히 일치한다. 첫 번째 변수와 같이 직접 문자열을 입력해줘도, os 라이브러리의 메소드를 사용하여 경로값을 줘도 무방하다.
listdir() 메소드를 사용하여 파일 목록을 호출하여 endswith() 메소드로 jpg 파일만을 찾아내서 리스트에 추가한다. 만약 좀 더 복잡한 조건을 걸고 싶다면 정규표현식을 사용하도록 하자.
그 후, 선별된 파일 리스트를 img2pdf.convert() 메소드에 인자로 넘겨준 후, 해당 객체로 파일에 쓰면 완성이다.
주의사항
파이썬 인터프리터로 실행시킬 때는, outpath2 및 outpath3 모두 문제없이 구동되는 것을 확인할 수 있다. 그러나, Windows application(.exe 파일)로 포팅할 시에는 문제가 생긴다.
위 에러가 뜨는 이유는 포팅된 Windows의 exe 파일은 파이썬에서 지원하는 글로벌 변수(__변수__)에 접근할 수 없기 때문이다. 그렇기 때문에 실제 글로벌 변수 __file__ 가 아닌,
sys.argv[0] 및 '__file__'를 대신 사용하여 현재 코드의 파일 이름을 찾아낼 수 있다.
혹은 os.getcwd() 메소드를 사용하여 현재 소스 코드 파일이 속한 디렉터리 경로를 아예 바로 구해버릴 수도 있다.
[출처] [Python] 이미지 파일을 PDF 파일로 변환하기|작성자 IML
'About 배우고 익히는법 > Python' 카테고리의 다른 글
[Python] 파이썬으로 이메일 보내기 (0) | 2019.01.04 |
---|---|
[Python] 웹에서 파일 다운로드 받기 (0) | 2019.01.04 |
Python으로 exe파일 만들기( cx_Freeze ) (0) | 2019.01.04 |
[Python GUI] PyQt5 입문하기 + 강좌 자료 모음 (0) | 2019.01.04 |
자연어처리 과정 기록(nltk) (0) | 2019.01.04 |