파이썬(python)2025. 4. 30. 23:15

파이썬(python)에서 마크다운(markdown, 통상 .md 확장자) 형식의 파일을 html 파일로 변환하는 방법이다. markdown 모듈을 이용하면 간편하게 작업 가능.

우선 markdown 모듈을 설치한다.

pip3 install markdown

데비안/우분투 계열 리눅스일 경우 python3-markdown 패키지를 설치해도 된다. 아래와 같이 진행하면 되겠다.

# S/W 저장소 정보 갱신
sudo apt update

# python3-markdown 패키지 설치
sudo apt install python3-markdown

이제 아래의 예제 코드와 같이 작성해 볼 수 있다. md 파일을 인자로 입력 받아서 확장자를 html로 바꾸고 변환 결과를 저장한다.  

 

import sys
import markdown

md_file = sys.argv[1]

# md 파일 읽기
f = open(md_file, 'r', encoding='utf-8')
md_content = f.read()
f.close()

# md -> html 변환
html_content = markdown.markdown(md_content, extensions=['extra'])

# html 파일 경로
# 문자열의 rsplit() 함수를 이용, 구분자를 '.'으로 하여 맨오른쪽을 기준으로 한번 분할
# 확장자가 제거된 파일 경로에 '.html' 붙임
html_file = md_file.rsplit('.', 1)[0] + '.html'

# html 파일 저장
f = open(html_file, 'w', encoding='utf-8')
f.write('<!DOCTYPE html><html>' + html_content + '</html>')
f.close()

 

md 파일에 코드 또는 표(테이블) 등이 포함되어 있을 경우를 처리하기 위해 markdown.markdown() 함수를 사용할 때 "extra" 확장을 사용하도록 지정했다. 이렇게 해야 마크다운에 포함된 코드나 표가 제대로 변환할 수 있다.

파일 확장자를 md에서 html로 바꾸기 위해 문자열을 맨 오른쪽 기준으로 분할하여 리스트를 만드는 rsplit() 함수를 이용했다. 구분자를 '.', 최대 분할 회수를 1로 지정하여 분할한 후 첫번째 원소를 취하면 파일 경로의 맨 오른쪽에 위치한 확장자가 제거된 결과를 얻는다. 여기에 '.html' 문자열을 붙이면 된다.

markdown.markdown() 함수로 형식을 변환한 결과에 html임을 나타내는 헤더는 포함되지 않는다. 따라서 html 파일을 만들 때 변환 결과 앞에는 <!DOCTYPE html><html>, 뒤에는 </html> 태그를 붙여 주었다.

위의 스크립트를 md2html.py로 저장하고 아래와 같이 my_file.md 파일을 my_file.html 파일로 변환할 수 있다.

python3 md2html.py my_file.md

파이썬 markdown 모듈에 대한 사용 설명서는 아래의 링크를 참고하자.

https://python-markdown.github.io/

728x90
Posted by 반달가면