我的小心机很自嗨——python创建vcf联系人通讯录,自定义来电头像

创作不易 只因热爱!!
**

热衷分享,一起成长!

我的小心机很自嗨——python创建vcf联系人通讯录,自定义来电头像


从示例中快速使用 python创建vcf联系人通讯录,自定义来电头像

1.重点就是直接上代码

import pandas as pd
import quopri
import base64

# 1.文件备用, 图片统一存放的路径
file_xlsx_changed = r'C:\Users\Administrator\通讯录改好.xlsx'
file_txl_will_import = r'C:\Users\Administrator\通讯录将要导入.vcf'
pic_filepath = r'C:\Users\Administrator\pic\\'

# 2.读取改好的通讯录准备写入vcf中
data = pd.read_excel(file_xlsx_changed )
# print(data.columns) # Index(['姓名', '电话1', '电话2', '备注', '图片名', '自定义前缀'], dtype='object')
file_import = open(file_txl_will_import,'a+',encoding='utf-8')

# 3.循环写入, 直至关闭文件
for row in data.values:
    # 开始
    file_import.write('BEGIN:VCARD\n')
    file_import.write('VERSION:2.1\n')
    
    # 姓名加密写入
    writename = quopri.encodestring((row[5] +'-'+ row[0]).encode()).decode()  
    # writerow = str(quopri.decodestring(row[1].encode()))[2:-1].replace('\\x','=').upper() # XX搜索上面看到的,这个写法很low
    file_import.write('N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;'+writename+';;;\n')
    file_import.write('FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:'+writename+'\n')
    
    # 电话及多个电话的写入 .replace('.0','') 可能电话会转成带.0数字
    file_import.write('TEL;CELL:'+str(row[1]).replace('.0','')+'\n')
    if row[2] != 'nan':
        file_import.write('TEL;WORK:'+str(row[2]).replace('.0','')+'\n')
        
    # 备注写入
    if row[3] != 'nan':
        file_import.write('NOTE;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:'+quopri.encodestring(row[3].encode()).decode()+'\n')
    
    # 来电头像 注意尺寸 96*96像素
    if row[4] != 'nan':
        img = open(pic_filepath + row[4],'rb')
        writeimg = base64.b64encode(img.read()).decode()
        file_import.write('PHOTO;ENCODING=BASE64;JPEG:'+writeimg[:47]+'\n')
        for n in range(int(len(writeimg[47:])/73)+1):
            file_import.write(' '+writeimg[47+73*n:47+73*(n+1)]+'\n')
        file_import.write('\n')
        
    # 结尾 
    file_import.write('END:VCARD\n')
    
file_import.close()

2.基础

2.1.用 Notepad记事本打开文件"通讯录导出.vcf",部分文件如下

在这里插入图片描述

2.2 简单读取"通讯录导出.vcf",导出"通讯录导出.xlsx"

import pandas as pd
import quopri

file_txl_export = r'C:\Users\Administrator\通讯录将要导入.vcf'
file_xlsx_export = r'C:\Users\Administrator\通讯录导出.xlsx'

nf =open(file_txl_export, 'r+')
n_string = nf.read()
nf.close()

narr = n_string.split('END:VCARD\n')
testarr = []
for n in narr:
    name = n.split('\n')
    newarr = ['','','','','','','','','','','','','']
    nc = 0
    for m in name:
        if 'ENCODING=QUOTED-PRINTABLE' in m:
            try:
                newarr[nc] = quopri.decodestring(m.split(':')[-1].replace(';','').encode()).decode('utf-8',errors = 'ignore')
            except:
                print(m.split(':')[-1].replace(';',''))
        elif 'TEL;' in m:
            newarr[nc] = m.split(':')[-1]
        elif ':' in m:
            newarr[nc] = m.split(':')[-1]
        nc += 1
    testarr.append(newarr)

pd.DataFrame(testarr,columns=['1','2','3','4','5','6','7','8','9','10','11','12','13']).to_excel(file_xlsx_export)

2.3 自行根据喜好修改好,另存为"通讯录改好.xlsx",类似如下

在这里插入图片描述

图片按说明放入pic文件夹

最后尽在重点内容中 运行 后导入手机
NICE!!!

^**你好呀,我是一个医信行业工程师,喜欢学习,喜欢搞机,喜欢各种捣,也会持续分享,如果喜欢我,那就关注我吧!**^


作者|医信工程师随笔|Carltiger_github

图片|网络|侵删!!

关注我,我们共同成长

“你的鼓励就是我分享的动力”

  • 12
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值