vobject 패키지
스마트폰의 연락처에는 이름과 전화번호 외에도 직작이나 직책, 또는 홈페이지나 SNS 주소 등 다양한 정보를 저장할 수 있습니다.
파이썬의 vobject 패키지는 xCard 파일을 관리하는 데 필요한 명령어를 제공하여, VCE를 마치 레고 블록처럼 조립할 수 있게 도와줍니다. VCF를 vobject 패키지를 사용해서 생성해 봅시다.
이 패키지를 사용하려면 비주얼 스튜디오 코드에서 터미널을 열고 다음 명령어를 입력하여 설치합니다.
$ pip install -U vobject
vobject에 대한 더 자세한 정보는 공식 문서에서 찾을 수 있습니다. 실습을 통해 vobject 패키지의 명령어를 살펴보고 연락처에 여러 가지 데이터를 입력해 봅시다.
* vobject 공식 문서의 URL은 https://py-vobject.github.io/ 입니다.
이름 입력하기
vobject 패키지의 함수 vCard()는 vCard 객체를 생성합니다. VCF에 데이터를 입력할 때는 함수 add()로 특정 속성을 생성한 뒤, 속성 value에 문자열을 지정하면 됩니다. 그리고 나서 vCard 객체의 속성 type_param에 세부 정보를 지정할 수 있습니다. 다음은 vCard 객체를 생성하고 업무용 전화번호를 저장하는 코드입니다.
vcard = vobject.vCard()
tel = vcard.add("TEL")
tel.value = "+82(2)1234-5678"
tel.type_param = "WORK" # 업무용
연락처에 저장할 이름을 의미하는 FN과 N 속성은 필스 속성이므로 반드시 입력해야 합니다. voject 패키지를 사용해서 VCF에 여러 개의 이름과 전화번호를 입력해 봅시다. 비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_2_3.py'로 지정합니다. 다음 코드를 입력한 뒤, 대화형 창에서 실행하면 성(family name)과 이름(given name)을 구분한 전체 이름(full name), 그리고 용도에 따라 구분한 두 가지 전화번호가 입력된 VCF를 확인할 수 있습니다
import vobject
vcard = vobject.vCard()
fn = vcard.add("FN") # 전체 이름
fn.value = "혼자 만들면서 배우는 파이썬"
name = vcard.add("N") # 이름
name.value = vobject.vcard.Name(family="혼자 만들면서 배우는", given="파이썬")
tel_cell = vcard.add("TEL") # 전화번호
tel_cell.value = "+82(10)1234-5678"
tel_cell.type_param = "CELL" # 휴대용
tel_work = vcard.add("TEL")
tel_work.value = "+82(2)1234-5678"
tel_work.type_param = "WORK" # 업무용
print(vcard.serialize())
실행결과
BEGIN:VCARD
VERSION:3.0
FN:혼자 만들면서 배우는 파이썬
N:혼자 만들면서 배우는;파이썬;;;
TEL;TYPE=CELL:+82(10)1234-5678
TEL;TYPE=WORK:+82(2)1234-5678
END:VCARD
이메일과 소속 및 직책, 홈페이지 입력
vobject 패키지의 객체 vCard에 속성을 지정하면 무엇이든 연락처 앱에 연결해서 활용할 수 있습니다. 예를 들어 다음은 연락처에 별명(nickname)을 추가하는 코드입니다.
nick = vcard.add("NICKNAME")
nick.value = "혼만파"
여기서는 이메일(email)과 소속(organization), 직책(title), 그리고 홈페이지(url) 속성을 추가할 것입니다. 데이터를 모두 입력하고 나면 serialize() 함수를 사용해서 VCF 형식으로 변환하고, '.vcf' 확장자를 붙여 'output' 폴더에 파일로 저장하겠습니다.
이전에 작성한 소스 코드 'step_2_3.py'에 이어서 다음 코드를 입력하고, 대화형 창에서 실행하세요.
import vobject
vcard = vobject.vCard()
fn = vcard.add("FN") # 전체 이름
fn.value = "혼자 만들면서 배우는 파이썬"
name = vcard.add("N") # 이름
name.value = vobject.vcard.Name(family="혼자 만들면서 배우는", given="파이썬")
tel_cell = vcard.add("TEL") # 전화번호
tel_cell.value = "+82(10)1234-5678"
tel_cell.type_param = "CELL" # 휴대용
tel_work = vcard.add("TEL")
tel_work.value = "+82(2)1234-5678"
tel_work.type_param = "WORK" # 업무용
email = vcard.add("EMAIL") # 이메일
email.value = "email@example.com"
email.type_param = "WORK"
title = vcard.add("TITLE") # 직책
title.value = "(직책)편집자"
org = vcard.add("ORG") # 소속
org.value = ["(직장)한빛미디어", "(부서)IT1팀"]
url = vcard.add("URL") # 홈페이지
url.value = "https://www.hanbit.co.kr/"
print(vcard.serialize())
from pathlib import Path
from step_1_1 import OUT_DIR
with open(OUT_DIR / f"{Path(__file__).stem}.vcf", "w",
encoding="utf-8") as fp:
fp.write(vcard.serialize())
실행결과
BEGIN:VCARD
VERSION:3.0
EMAIL;TYPE=WORK:email@example.com
FN:혼자 만들면서 배우는 파이썬
N:혼자 만들면서 배우는;파이썬;;;
ORG:(직장)한빛미디어;(부서)IT1팀
TEL;TYPE=CELL:+82(10)1234-5678
TEL;TYPE=WORK:+82(2)1234-5678
TITLE:(직책)편집자
URL:https://www.hanbit.co.kr/
END:VCARD
QR 코드 생성
VCF 파일이 준비되었다면 이를 QR 코드로 만드는 과정은 간단합니다. 소스 코드 'step_2_3.py'에 이어서 다음 코드를 입력하고, 대화형 창에서 실행합니다. 'output' 폴더에 QR 코드가 이미지 파일로 저장됩니다.
import vobject
vcard = vobject.vCard()
fn = vcard.add("FN") # 전체 이름
fn.value = "혼자 만들면서 배우는 파이썬"
name = vcard.add("N") # 이름
name.value = vobject.vcard.Name(family="혼자 만들면서 배우는", given="파이썬")
tel_cell = vcard.add("TEL") # 전화번호
tel_cell.value = "+82(10)1234-5678"
tel_cell.type_param = "CELL" # 휴대용
tel_work = vcard.add("TEL")
tel_work.value = "+82(2)1234-5678"
tel_work.type_param = "WORK" # 업무용
email = vcard.add("EMAIL") # 이메일
email.value = "email@example.com"
email.type_param = "WORK"
title = vcard.add("TITLE") # 직책
title.value = "(직책)편집자"
org = vcard.add("ORG") # 소속
org.value = ["(직장)한빛미디어", "(부서)IT1팀"]
url = vcard.add("URL") # 홈페이지
url.value = "https://www.hanbit.co.kr/"
print(vcard.serialize())
from pathlib import Path
from step_1_1 import OUT_DIR
with open(OUT_DIR / f"{Path(__file__).stem}.vcf", "w",
encoding="utf-8") as fp:
fp.write(vcard.serialize())
import qrcode
qr = qrcode.make(vcard.serialize())
qr.save(OUT_DIR / f"{Path(__file__).stem}.png")
실행결과

생성된 QR 코드를 열어서 스마트폰의 QR 코드 스캐너로 촬영해 보세요. VCF에 저장된 연락처 데이터가 자동으로 입력됩니다.

'프로그래밍 언어 > Python' 카테고리의 다른 글
| QR 코드에 이미지 삽입하기: pillow 패키지 활용 (0) | 2025.12.24 |
|---|---|
| QR 코드에 이미지 삽입하기 (0) | 2025.12.21 |
| 연락처를 QR 코드로 만들기 (0) | 2025.12.14 |
| QR 코드 만들기 (0) | 2025.12.07 |
| QR 코드 기초 다지기 (0) | 2025.12.05 |