为什么我的Python脚本无法读取文件的所有行,或写入新文件的所有行?

0 投票
1 回答
536 浏览
提问于 2025-04-18 02:18

我写了一个小脚本,用来从一个文件中删除一些行。问题是,它只写入了我想要的前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

撰写回答