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}
}
答案 0 :(得分:0)
lines
是普通的list
,并且普通的list
无法通过要查找的一系列索引进行索引。这里最简单的解决方案是制作一个生成器表达式,以替换掉您所关心的行:
wt.writelines(lines[rows])
具有:
wt.writelines(lines[row] for row in bad_list)
假设bad_list
是您描述的数组,则完全丢弃外部for
循环;您不想每行一遍又一遍地打开输入和输出文件,而只一次打开。