You need to enable JavaScript to run this app. Python实现TXT文件随机不重复行提取及代码调试
优惠活动
大模型
产品
解决方案
定价
更多

Python实现TXT文件随机不重复行提取及代码调试

现有代码核心问题排查
  • 双套文件读取逻辑冗余冲突:同时用原生open()和pandas读取同一个TXT文件,原生读取后做的全量空白split,和后续pandas读取得到的订单号列表完全没有联动,重复读文件还容易因为split()对换行符的处理不严谨,把带空格的订单号拆成多个元素,导致循环计数错误。
  • pandas读取参数错误:读取TXT文件时没有指定header=None,会默认把第一行存储的订单号(比如示例里的Order#1)当成列名,导致实际提取的订单号列表遗漏第一行内容,出现取值偏差。
  • 字符串拼接逻辑类型错误:通过pandas提取的uniques是存储所有订单号的数组,代码中直接把这个数组和URL字符串做拼接,Python不支持字符串和numpy数组直接相加,运行时必然抛出类型错误,根本生成不了有效访问链接。
  • 循环遍历取值错位:循环体内没有从uniques数组里按索引提取单个订单号,每次循环都引用整个数组,完全做不到逐行访问,更谈不上按订单号请求对应链接。
  • 缺失核心需求的实现逻辑:代码全程没有导入随机处理模块,没有序列打乱、无重复抽样的步骤,根本达不到“提取随机且唯一的行”的目标。
  • 文件资源管理不规范:原生open()打开文件后没有关闭动作,也没有使用上下文管理器,长期运行会占用系统文件句柄。
修正后可正常运行的实现代码
import random
import pandas as pd
from selenium import webdriver

# 规范读取每行存储的订单号,文件无表头
df = pd.read_csv("Order#.txt", header=None, sep="\t")
# 过滤空值、去除首尾空白、去重,生成不重复的订单号列表
unique_orders = df[0].dropna().str.strip().unique().tolist()
# 随机打乱列表顺序,保证每次遍历的订单是随机的、无重复的
random.shuffle(unique_orders)

# 初始化浏览器驱动(替换为你自己的Chrome option配置)
option = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=option)

# 逐行访问对应追踪链接
for order_no in unique_orders:
    Mainlink = f'https://footlocker.narvar.com/footlocker/tracking/startrack?order_number={order_no}'
    driver.get(Mainlink)
可灵活调整的使用提示
  • 如果不需要遍历全部订单,只想随机抽取固定数量的不重复订单,不需要全量遍历的话,可以把打乱后的列表替换成random.sample(unique_orders, 想要抽取的数量)生成抽样列表,再逐次循环。
  • 原来手写的原生open()读取、split拆分的代码可以完全删掉,pandas处理TSV格式文本时对空行、换行符、首尾空白的容错性远高于手写split逻辑,不会因为文件格式的微小偏差出现拆分错误。
  • 拼接URL时一定要提取单条订单号值,不能直接把整个订单数组和URL字符串拼接,否则会触发类型转换报错。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 00:36:06