연락처를 QR 코드로 만들기
VCF는 전자 명함의 세계 표준으로, 다양한 기기와 소프트웨어에서 연락처 정보를 일정한 형식으로 저장하고 교환할 수 있는 파일 형식입니다. 주로 이메일 프로그램과 연락처 관리 앱에서 사용하며, 일반 텍스트 파일과 같기 때문에 별도의 처리 없이 데이터를 공유할 수 있습니다.
VCF는 데이터를 속성 : 값 쌍으로 저장합니다. 파이썬의 딕셔너리와 비슷하지만, VCF는 중괄호 { }가 없고, 각 데이터 쌍을 개행 문자(\n)로 구분합니다.

연락처 정보를 VCF로 저정하기
스마트폰의 연락처에 저장할 데이터를 작성하고 VCF로 저장합니다. 이름은 반드시 필요하며, VCF 형식에 맞게 속성과 값을 쌍으로 만들어야 합니다.
코드로 실습합니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_2_1.py'로 지정합니다. 다음 코드를 입력한 뒤 대화형 창에서 실행하면, 'output' 폴더에 '.vcf' 확장자를 갖는 VCF 파일이 생성됩니다.
ch_04/step_2_1.py
from pathlib import Path
from step_1_1 import OUT_DIR # 이전에 작성한 모둘을 불러옵니다.
data = [ # 04
"BEGIN:VCARD", # vCard 시작
"VERSION:3.0", # 버전
"N:혼자 만들면서 배우는;파이썬;;;", # 성;이름;미들네임;접두어;접미어 # 07
"FN:혼자 만들면서 배우는 파이썬", # 전체 이름
"TEL;type=CELL:+82 10-1234-5678", # 전화번호 # 09
"END:VCARD", # vCard 종료
]
vcf = "\n".join(data) # 리스트를 하나의 문자열로 변경 # 12
with open(OUT_DIR / f"{Path(__file__).stem}.vcf", "w" # 13
, encoding="utf-8") as fp: # 14
fp.write(vcf)
04 VCF로 만들 연락처 정보를 리스트로 만들고, 이를 변수 data에 저장합니다.
07 속성 N에 성과 이름을 세미 콜론으로 구분해 입력하고, 미들웨어과 접두어, 접미어는 생략합니다.
09 속성 TEL에 전화번호를 저장합니다. 이때 'type=CELL'을 입력하여 휴대전화 번호임을 지정합니다.
12 함수 join()를 사용해서 data 변수에 저장된 각 속성을 개행 문자 '\n'으로 연결하고, 하나의 문자열로 만듭니다.
13~14 함수 open()를 사용해서 변수 vcf에 저장된 문자열을 OUT_DIR 경로에 파일로 저장합니다.
VCF는 일반 텍스트 파일이므로 비주얼 스튜디오 코드와 같은 텍스트 편집기로 열 수 있습니다. 소스 코드 12행의 변수 vcf를 드래그해서 선택하고 대화형 창에서 실행하세요. 다음과 같이 개행 문자 '\n'이 포함된 속성:값 쌍 데이터를 확인할 수 있습니다.
| BEGIN:VCARD VERSION:3.0 N:혼자 만들면서 배우는;파이썬;;; FN:혼자 만들면서 배우는 파이썬 TEL;type=CELL:+82 10-1234-5678 END:VCARD |
연락처 정보를 QR 코드로 만들기
VCF는 일반 텍스트 파일, 다르게 말하면 문자열입니다. 앞에서 qrcode 패키지의 함수 qrcode.make()에 대해 배웠으니, 쉽게 VCF를 QR 코드로 만들 수 있습니다.
소스 코드 'step_2_1.py'에 이어서 다음 코드를 입력하고, 대화형 창에서 실행합니다. 연락처 정보가 담긴 QR 코드가 생성됩니다.
ch_04/step_2_1.py
from pathlib import Path
from step_1_1 import OUT_DIR # 이전에 작성한 모둘을 불러옵니다.
data = [ # 04
"BEGIN:VCARD", # vCard 시작
"VERSION:3.0", # 버전
"N:혼자 만들면서 배우는;파이썬;;;", # 성;이름;미들네임;접두어;접미어 # 07
"FN:혼자 만들면서 배우는 파이썬", # 전체 이름
"TEL;type=CELL:+82 10-1234-5678", # 전화번호 # 09
"END:VCARD", # vCard 종료
]
vcf = "\n".join(data) # 리스트를 하나의 문자열로 변경 # 12
with open(OUT_DIR / f"{Path(__file__).stem}.vcf", "w" # 13
, encoding="utf-8") as fp: # 14
fp.write(vcf)
import qrcode
img = qrcode.make(vcf)
img
[실행 결과]

출력된 QR 코드를 스마트폰의 QR 스캐너로 스캔해 보세요. 스마트폰의 연락처 앱으로 연결되고, VCF에 저장된 데이터가 자동으로 나타납니다.

지금까지 작성한 코드를 다시 재사용할 수 있도록 정리하겠습니다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_2_2.py'로 지정하세요. 다음과 같이 소스 코드를 입력한 뒤, 대화형 창에서 실행합니다. 'output' 폴더에 'step_2_2.vcf' 파일과 'step_2_2.png' 파일이 생성됩니다.
from pathlib import Path
import qrcode
from step_1_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
OUT_2_2_VCF = OUT_DIR / f"{Path(__file__).stem}.vcf"
OUT_2_2_PNG = OUT_DIR / f"{Path(__file__).stem}.png"
if __name__ == "__main__":
data = [
"BEGIN:VCARD", # vCard 시작
"VERSION:3.0", # 버전
"N:혼자 만들면서 배우는;파이썬;;;", # 성;이름;미들네임;접두어;접미어
"FN:혼자 만들면서 배우는 파이썬", # 전체 이름
"TEL;type=CELL:+82 10-1234-5678", # 전화번호
"END:VCARD", # vCard 종료
]
vcf = "\n".join(data) # 리스트를 하나의 문자열로 변경
with open(OUT_2_2_VCF, "w", encoding="utf-8") as fp:
fp.write(vcf) # 파일로 저장
img = qrcode.make(vcf) # QR 코드 생성
img.save(OUT_2_2_PNG) # 파일로 저장
잘 정리한 소스 코드는 프로젝트의 규모가 커질수록 진가를 말할 것입니다. 폴더와 파일의 경로를 일정하게 지정해 두고, 파일을 체계적으로 저장하세요.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| QR 코드에 이미지 삽입하기 (0) | 2025.12.21 |
|---|---|
| vobject 패키지 (0) | 2025.12.17 |
| QR 코드 만들기 (0) | 2025.12.07 |
| QR 코드 기초 다지기 (0) | 2025.12.05 |
| 이미지 콜라주에 메시지 남기기 (0) | 2025.12.02 |