遍历数组的readlines和写入新文件的writelines

时间:2018-12-05 01:05:17

标签: python python-2.7 readlines

bad_list是从其他函数返回的数组,返回有问题且需要更仔细查看的行的行号

例如for rows in bad_list: filename = 'C:\\Users\\Username\\Downloads\\test.txt' bad_filename = str(filename)[:-4] + '_badlines.txt' with open(filename) as f, open(bad_filename, 'w') as wt: lines = f.readlines() #print lines[rows] wt.writelines(lines[rows])


想法是读取test.txt,并制作一个新的test_badlines.txt,其中仅包含bad_list中指定的有问题的行


这是我到目前为止的内容,打印行有效,但写行只在应该为6行时吐出1行

function resolve()
{
  SRV=$(echo $1 | tr '\\' '\n' | head -1)
  INS=$(echo $1 | tr '\\' '\n' | tail -1)
  PORT=`echo -n '04'$(echo -n $INS | xxd -ps -c 200) | xxd -r -p | nc -u $SRV 1434 -w 1 \
  | perl -nle 'm/tcp;(.*?);.*/; print $1'`
  echo ${SRV},${PORT}\\${INS} 
}

1 个答案:

答案 0 :(得分:0)

lines是普通的list,并且普通的list无法通过要查找的一系列索引进行索引。这里最简单的解决方案是制作一个生成器表达式,以替换掉您所关心的行:

wt.writelines(lines[rows])

具有:

wt.writelines(lines[row] for row in bad_list)

假设bad_list是您描述的数组,则完全丢弃外部for循环;您不想每行一遍又一遍地打开输入和输出文件,而只一次打开。