美文网首页
python制作vcf通讯录批量导入联系人

python制作vcf通讯录批量导入联系人

作者: harv9y | 来源:发表于2020-11-27 16:11 被阅读0次

    一、先做好excel表格

    图片.png

    二、另存为UTF8 编码的逗号分隔值文件格式(csv)

    图片.png

    三、python代码(csv2vcf.py)

    import sys
    import os
    import re
    
    def csv2vcf_android(csv_filename, encoding='utf-8'):
        """csv格式文件转换为安卓适用的vcf格式文件"""
        # 1.读取csv文件
        with open(csv_filename, 'r', encoding='utf-8') as f:
            ftext_list = f.readlines()
            f.close()
        # 2.将cvs转换为vcf格式
        vcards = ''
        for line in ftext_list[1:]:
            tel_numbers = ''
            name_tel_list = line.strip().split(',')
            if name_tel_list[0]:
                tel_name = name_tel_list[0]  # 姓名
                org = name_tel_list[1]       # 单位
                for tel in name_tel_list[2:]:  # 电话
                    tel_numbers += f'TEL;CELL:{tel}\n'
                vcard = f'BEGIN:VCARD\nN:{tel_name}\nORG:{org}\n{tel_numbers}END:VCARD\n'
                vcards += vcard
        # 3.保存转换后的vcf格式文件
        (fpath, temp_fname) = os.path.split(csv_filename)
        (fname, fextension) = os.path.splitext(temp_fname)
        with open(f'{fpath}{fname}_android.vcf', "w", encoding=encoding) as f:
            try:
                f.write(vcards)
            finally:
                f.close()
    
    def csv2vcf_ios(csv_filename, encoding='utf-8'):
        """csv格式文件转换为ios适用vcf格式文件"""
        # 1.读取csv文件
        with open(csv_filename, 'r', encoding='utf-8') as f:
            ftext_list = f.readlines()
            f.close()
        # 2.将cvs转换为vcf格式
        vcards = ''
        for line in ftext_list[1:]:
            #tel_numbers = ''
            name_tel_list = line.strip().split(',')
            if name_tel_list[0]:
                tel_name = name_tel_list[0]  # 姓名
                xing = tel_name[0]   # 姓
                ming = tel_name[1:]  # 名 
                #print(xing,ming,len(ming))
                org = name_tel_list[1]  # 单位
                short_tel = name_tel_list[2]
                long_tel = name_tel_list[3]
                vcard = f'BEGIN:VCARD\nVERSION:3.0\nN:{xing};{ming};;;\nFN:{ming} {xing}\nORG:{org};\nTEL;TYPE=CELL;TYPE=pref;TYPE=VOICE:{long_tel}\nTEL;TYPE=WORK;TYPE=VOICE:{short_tel}\nPRODID:-//Apple Inc.//iCloud Web Address Book 2021B82//EN\nREV:2020-11-26T19:51:27Z\nEND:VCARD\n'     
                vcards += vcard
        # 3.保存转换后的vcf格式文件
        (fpath, temp_fname) = os.path.split(csv_filename)
        (fname, fextension) = os.path.splitext(temp_fname)
        with open(f'{fpath}{fname}_ios.vcf', "w", encoding=encoding) as f:
            try:
                f.write(vcards)
            finally:
                f.close()
    
    
    
    filename = sys.argv[1]
    csv2vcf_android(filename)
    csv2vcf_ios(filename)
    

    四、运行python脚本

    python csv2vcf.py filename.csv
    

    在要转换的cvs文件夹中保存了适用于安卓和ios的cvf文件


    图片.png

    五、发送到手机用自带的“联系人/通讯录”打开,导入/存储联系人即可。

    相关文章

      网友评论

          本文标题:python制作vcf通讯录批量导入联系人

          本文链接:https://www.haomeiwen.com/subject/dibxwktx.html