批量提取txt里的指定内容

只运行报错的代码没问题,但一循环组合在一起就报错有问题
是说超出索引范围,调了好久还是没解决,求各位指教
目的:批量提取txt里的指定内容然后导出
代码如下:
import os
import xlwt
import pandas as pd
path=r'E:\BaiduNetdiskDownload\0.Feature Score - 副本'
files=os.listdir(path)#得到文件夹下所有文件名称
#遍历文件夹
barcode=[]
score=[]
position=[]
i=0
for file in files:
i+=1
print(i)

if i>0:
    mainlj=os.path.abspath(r'E:\BaiduNetdiskDownload\0.Feature Score - 副本')
    file=os.path.join(mainlj,file)
    fn = open(str(file))
    f1 = fn.readlines()
    list1=[]
    list18=[]
    list18_1=[]
    for index,value in enumerate(f1[0].split('_')):
        list1.append(value)
    barcode.append(list1[4])
    for index,value in enumerate(f1[16].split(':')):
        list18.append(value)
    position.append(list18[0])
    for index,value in enumerate(list18[1].split('=')):
        value=value.strip('\n')
        list18_1.append(value)
    score.append(list18[1])

df=pd.DataFrame({'Barcode':barcode,'Score':score,'Position':position})
print(df)
df.to_csv("./outputsy.csv",encoding='utf_8_sig')
print("导出完成")

报错问题:

img

在29行代码处上一行打印出list18的长度或该列表,看看它的长度有没有到达2

能把原始文件发一下吗?或者截个图看看也可以。

文件都一样么?
如果一样的话
走遍历

respose = open('respose .txt', 'w+')
for data in track(read_file(‘xxxx.txt’), description='执行中'):
    print(‘每行内容’)
    if xxx in data:
        respose .write(xxx)
   
    if fS in data:
        respose .write(xxx)
   
        

这是你有的文件第17行没有":", f1[16].split(':')以:分割列表只有一个元素,
list18列表也就只添加了一个元素
只有list18[0]

for index,value in enumerate(list18[1].split('=')):

这行访问list18[1]就是超出索引范围

你print(f1[16])输出下文件的第17行看看是不是正确.
可能有的文件前面多了一行或少了一行,导致第17行不是有":"的那行了