使用Python3.x分批读取XLSX每100行并写入TXT文件
分批处理XLSX中的URL到TXT文件
核心思路
用itertools.islice按批次截取工作表行数据,每100行作为一批写入独立TXT文件;循环执行直到所有行处理完毕,自动适配最后一批不足100行的情况。
完整实现代码
from openpyxl import load_workbook from itertools import islice def batch_process_xlsx_urls(xlsx_path, batch_size=100): # 只读模式加载工作簿,优化大文件处理性能 wb = load_workbook(xlsx_path, read_only=True) ws = wb.active # 获取默认第一个工作表 # 转换行数据为迭代器,假设第一行是表头,无表头则删除next(rows) rows = iter(ws.iter_rows(values_only=True)) next(rows) # 跳过表头行 batch_num = 1 while True: # 截取当前批次的行,最多取batch_size条 batch = list(islice(rows, batch_size)) if not batch: break # 无数据时退出循环 # 提取URL(假设URL在第一列,非第一列则修改row[0]为对应索引) url_list = [row[0] for row in batch if row[0] is not None] # 写入TXT,每行一个URL with open(f"url_batch_{batch_num}.txt", "w", encoding="utf-8") as f: f.write("\n".join(url_list)) print(f"完成第{batch_num}批处理,共{len(url_list)}条URL") batch_num += 1 # 调用示例,替换为你的XLSX文件路径 if __name__ == "__main__": batch_process_xlsx_urls("your_url_file.xlsx")
关键细节说明
islice的作用:每次从行迭代器中截取指定数量的行,迭代器会自动向后移动,不会重复读取数据,刚好适配分批需求。- 空值过滤:代码中跳过了空的URL行,避免TXT中出现空行。
- 文件命名:用批次号区分输出文件,方便后续批量处理或查看。
调整提示
- 若XLSX无表头,删除
next(rows)这一行。 - 若URL不在第一列,把
row[0]改成对应列的索引(比如第二列写row[1])。
内容的提问来源于stack exchange,提问作者bogdan_zak
相关产品推荐
相关产品推荐

