为什么我的Python脚本无法读取文件的所有行,或写入新文件的所有行?
我写了一个小脚本,用来从一个文件中删除一些行。问题是,它只写入了我想要的前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
为什么这个脚本没有读取文件中的所有行,或者为什么它没有把所有行写入新文件呢?
补充说明:这个脚本确实能选中我想要复制到新文件中的行,但只限于前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>
1 个回答
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