IOS、安卓机: 批量导入-通讯录信息-教程:

1. 编写Python脚本,生成 xxx个联系人信息 .C++sv 文件  


2. 进入 网页版-QQ邮箱-通讯录(管理-导入联系人文件),上传生成的 .csv 文件  


3. QQ邮箱-通讯录(管理-导出联系人文件),格式选择:vCard格式  


4. 传到 iOS/安卓 手机, 选择文件,导入通讯录   

 

注意点:导出上限:每次1000左右; 导入上限:每次 3000左右

 

 

 

改良版本:

1. random_name_phone.py :生成随机联系人数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!usr/bin/env Python
# -*- coding:utf-8 _*-
"""
@author:Zx
@file: random_name_phone.py
@time: 2025/9/5  17:45
# @describe: 生成
"""
import json
import random
import csv
 
# 中文姓氏列表
surnames = ['赵''钱''孙''李''周''吴''郑''王''冯''陈''褚''卫''蒋''沈''韩''杨',
            '朱''秦''尤''许''何''吕''施''张''孔''曹''严''华''金''魏''陶''姜',
            '戚''谢''邹''喻''柏''水''窦''章''云''苏''潘''葛''奚''范''彭''郎',
            '鲁''韦''昌''马''苗''凤''花''方''俞''任''袁''柳''酆''鲍''史''唐',
            '费''廉''岑''薛''雷''贺''倪''汤''滕''殷''罗''毕''郝''邬''安''常',
            '乐''于''时''傅''皮''卞''齐''康''伍''余''元''卜''顾''孟''平''黄']
 
# 中文名字字符列表(男性和女性常用字)
name_chars = ['伟''芳''娜''秀''英''敏''静''建''强''军''杰''磊''洋''艳''玲''丽',
              '刚''勇''鹏''超''明''霞''燕''华''平''鑫''晶''亮''健''凯''飞''波',
              '宁''栋''博''宇''森''琳''丹''莹''雪''慧''璐''婷''欣''颖''悦''翔',
              '海''峰''阳''帅''帅''琦''瑞''凡''思''宏''云''睿''哲''泽''嘉''子',
              '浩''轩''宇''涵''一''逸''文''辰''沐''梓''艺''欣''梦''雨''彤''馨']
 
 
def generate_random_name():
    """生成随机中文姓名"""
    surname = random.choice(surnames)
    # 随机生成1或2个字的名字
    if random.random() > 0.5:
        name = ''.join(random.sample(name_chars, 1))
    else:
        name = ''.join(random.sample(name_chars, 2))
    return surname + name
 
 
def generate_random_phone():
    """生成随机中国手机号"""
    # 手机号前缀:常见的前三位
    prefixes = ['130''131''132''133''134''135''136''137''138''139',
                '150''151''152''153''155''156''157''158''159',
                '180''181''182''183''184''185''186''187''188''189']
 
    prefix = random.choice(prefixes)
    # 生成后8位数字
    suffix = ''.join([str(random.randint(09)) for in range(8)])
    return prefix + suffix
 
 
def generate_contacts(num_contacts):
    """生成指定数量的联系人"""
    contacts = []
    for in range(num_contacts):
        name = generate_random_name()
        phone = generate_random_phone()
        contacts.append({"Name": name, "Phone": phone})
    return contacts
 
 
def save_to_json(contacts, filename):
    """保存为JSON文件"""
    with open(filename, 'w', encoding='utf-8') as f:
        json.dump(contacts, f, ensure_ascii=False, indent=2)
 
 
def save_to_csv(contacts, filename):
    """保存为CSV文件(可选)"""
    with open(filename, 'w', newline='', encoding='utf-8-sig') as f:
        writer = csv.DictWriter(f, fieldnames=['Name''Phone'])
        writer.writeheader()
        writer.writerows(contacts)
 
 
# 生成1000个联系人
contacts_list = generate_contacts(1000)
 
# 保存为JSON文件
save_to_json(contacts_list, 'random_contacts.json')
print("已生成 random_contacts.json 文件")
 
# 可选:同时保存为CSV文件(方便其他用途)
save_to_csv(contacts_list, 'random_contacts.csv')
print("已生成 random_contacts.csv 文件")
 
# 打印前5个作为示例
print("\n前5个联系人的示例:")
for i, contact in enumerate(contacts_list[:5]):
    print(f"{contact['Name']}, {contact['Phone']}")

  


2. csv_to_vcard.py: 将 .csv 通讯录文件, 转成 vCard格式 文件

#!usr/bin/env python# -*- coding:utf-8 _*-"""@author:Zx
@file: csv_to_vcard.py
@time: 2025/9/8  11:48
# @describe: 将 .csv 通讯录文件, 转成 vCard格式 文件"""import csvdef csv_to_vcard(csv_filename, vcf_filename):    """
    将CSV文件转换为vCard格式    """
    try:
        with open(csv_filename, mode='r', encoding='utf-8-sig') as csv_file:
            csv_reader = csv.DictReader(csv_file)            # 检查列名
            print(f"检测到的列名: {csv_reader.fieldnames}")

            with open(vcf_filename, mode='w', encoding='utf-8') as vcf_file:
                contact_count = 0                for row in csv_reader:                    try:
                        name = row['Name'].strip()
                        phone = row['Phone'].strip()                        # 生成vCard格式
                        vcard = [                            'BEGIN:VCARD',                            'VERSION:3.0',
                            f'N:{name}',
                            f'FN:{name}',
                            f'TEL;TYPE=CELL,VOICE:{phone}',                            'END:VCARD'
                        ]                        # 写入文件
                        vcf_file.write('\n'.join(vcard) + '\n\n')
                        contact_count += 1                    except KeyError as e:                        print(f"错误: 找不到列 {e}")                        return
                    except Exception as e:                        print(f"处理行时出错: {e}")                        continue

                print(f"转换完成!成功转换 {contact_count} 个联系人到 {vcf_filename}")    except FileNotFoundError:        print(f"错误: 找不到文件 {csv_filename}")    except Exception as e:        print(f"发生错误: {e}")if __name__ == "__main__":
    csv_filename = 'random_contacts.csv'
    vcf_filename = 'contacts.vcf'

    csv_to_vcard(csv_filename, vcf_filename)