我写了一个小脚本来删除文件中的行。问题是它只写了我想要的前42个条目。
代码:
import fileinput
filename = "trip.txt"
phrase = '$GPGLL'
newfile = open("modifed_trip.txt", "w")
with fileinput.input(filename) as f:
for line in f:
if phrase in line:
newfile.write(line)
newfile.close()
文件大小= 4,209 KB
行数= 100825
为什么这个脚本没有读取文件中的所有行,或者为什么不将所有行写入新文件?
P.S。对于与短语匹配的前42行,这似乎选择了我要复制到新文件中的行。
编辑: 根据@ NimaZera的评论,我改变了这种影响:
with open("trip2-Copy2.txt") as f:
content = f.readlines()
for line in content:
if phrase in line:
newfile.write(line)
newfile.close()
这给我留下了这个错误:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 4283: character maps to <undefined>
答案 0 :(得分:1)
您的文件似乎使用非ASCII编码。除非您的Python脚本恰好使用与文件相同的编码进行编码,否则您在打开文件时需要声明编码。
在Python 3中,默认编码为UTF-8;在Python 2中,您需要在脚本的顶部声明该编码:
# -*- coding: <utf-8> -*-
或在打开文件时显式使用该编码:
with codecs.open("trip-Copy2.txt", "r", encoding="utf-8") as f:
# do something