【问题标题】:How to read the first letter from the last line in a txt file in python如何在python中读取txt文件最后一行的第一个字母
【发布时间】:2021-08-02 19:47:39
【问题描述】:

谁能告诉我如何读取python中txt文件最后一行的第一个字母。对不起,如果这个问题有点令人困惑,这是我关于堆栈溢出的第一个问题。

【问题讨论】:

标签: python


【解决方案1】:

这是一个解决方案,虽然可能不是最好的,因为它读取文本文件的所有内容,内存效率不高。对于您的要求,反向阅读可能太复杂了。

with open('text.txt', 'r') as f:
    print(list(f)[-1][0])

【讨论】:

  • 调用readlines 是不必要的,list(f) 也会将这些行作为列表返回。
  • 是的,感谢您的建议,将编辑答案。
【解决方案2】:
file_obj = open('myfile.txt')
the_text = file_obj.read()
*_, last_line = text.rsplit('\n', maxsplit=1)
first_char = last_line[0]

【讨论】:

  • 读取整个文件只是为了拆分它是不必要的。使用file.readlines()list(file) 更容易。
  • 这两个建议都将创建 N 行,其中只需要一个。
【解决方案3】:

访问文件最后一行的简单解决方案是使用基本的 for 循环,尽管需要 O(n) 时间:

file = open("script.txt", "r")
last = ""
for line in file:
  last = line
print(last[0])

【讨论】:

  • 我认为像@MySlav 那样使用file.readlines()[-1] 比遍历整个文件更可取。
【解决方案4】:

小文件解决方案。这将打开文件,并遍历行,直到文件被完全遍历。

with open('filename.txt') as f:
    for line in f:
        pass
    last_line_char = line[0]

大文件解决方案(也快得多)。这利用了os.seek() 模块。

import os

with open('filename.txt', 'rb') as f:
    f.seek(-2, os.SEEK_END)
    while f.read(1) != b'\n':
        f.seek(-2, os.SEEK_CUR)
    last_line = f.readline().decode()
    last_line_char = last_line[0]

来自here的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2015-01-24
    • 2017-01-25
    • 2019-02-25
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    相关资源
    最近更新 更多