按指定规格拆分换行分隔的代理列表并导出至文本文件
实现代理列表的批量拆分与导出
嘿,我来帮你把这个代理拆分的功能补全!你已经搞定了统计数量的部分,接下来咱们把拆分、去重导出的逻辑加上,完全满足你的需求:自定义生成不同大小的子列表,同一代理绝不重复出现在多个文件里。
完整实现代码
import os def split_proxy_list(): # 读取代理文件 filename = input('Enter a file name: ') if not os.path.exists(filename): print(f"Error: 文件 {filename} 不存在!") return # 读取所有代理,去除空行 with open(filename, 'r') as f: proxies = [line.strip() for line in f if line.strip()] total_proxies = len(proxies) print(f"总共读取到 {total_proxies} 个有效代理") # 获取用户需求:各大小子列表的数量 count_10 = int(input("请输入需要生成多少个大小为10的子列表:")) count_25 = int(input("请输入需要生成多少个大小为25的子列表:")) count_50 = int(input("请输入需要生成多少个大小为50的子列表:")) # 计算总需要的代理数量 required = count_10 * 10 + count_25 * 25 + count_50 * 50 if required > total_proxies: print(f"Error: 需要的代理总数({required})超过现有代理数({total_proxies}),无法完成拆分!") return # 创建输出目录(可选,避免文件混乱) output_dir = "split_proxies" os.makedirs(output_dir, exist_ok=True) # 生成大小为10的子列表 for i in range(count_10): # 从列表头部取10个代理,同时移除这些代理避免重复 group = proxies[:10] proxies = proxies[10:] # 写入文件 with open(os.path.join(output_dir, f"proxy_group_10_{i+1}.txt"), 'w') as f: f.write('\n'.join(group)) print(f"已生成:proxy_group_10_{i+1}.txt") # 生成大小为25的子列表 for i in range(count_25): group = proxies[:25] proxies = proxies[25:] with open(os.path.join(output_dir, f"proxy_group_25_{i+1}.txt"), 'w') as f: f.write('\n'.join(group)) print(f"已生成:proxy_group_25_{i+1}.txt") # 生成大小为50的子列表 for i in range(count_50): group = proxies[:50] proxies = proxies[50:] with open(os.path.join(output_dir, f"proxy_group_50_{i+1}.txt"), 'w') as f: f.write('\n'.join(group)) print(f"已生成:proxy_group_50_{i+1}.txt") print("所有子列表生成完成!") if __name__ == "__main__": split_proxy_list()
代码功能说明
- 读取代理:先读取文件,过滤掉空行,确保只处理有效代理
- 需求校验:先计算用户需要的总代理数,如果超过现有数量会直接提示错误,避免崩溃
- 去重逻辑:每次抽取子列表后,从原列表中移除已使用的代理,保证同一代理不会出现在多个文件里
- 文件导出:自动创建
split_proxies目录存放所有子列表,文件命名清晰(比如proxy_group_10_3.txt表示第3个10条的代理列表) - 友好提示:每一步都有打印提示,告诉你哪个文件已经生成
使用方法
- 把你的代理列表保存成文本文件(每行一个代理)
- 运行脚本,输入代理文件的路径
- 按照提示输入需要生成的各大小子列表数量,回车确认即可
内容的提问来源于stack exchange,提问作者user9680749
相关产品推荐
相关产品推荐

