使用read()函数仅提取最后一行

时间:2019-04-09 14:41:11

标签: python line readlines

我正在使用以下代码进行一些文本分析(我还有更多代码用于分析):

with open(os.path.join(root, file)) as auto:
    a = auto.read(50000)
    for line in auto:
      print(line)

我的问题是:如何仅打印文件的最后一行?

我尝试了这种方法,但我认为这不是一个好选择,因为它不返回任何消息:

with open(os.path.join(root, file)) as auto:
            a = auto.read(50000)
            lines = a.readlines()
            last_line = lines[-1]
            for line in auto:
                print(last_line)

如何使用auto.read()打印文件的最后一行?

谢谢

2 个答案:

答案 0 :(得分:1)

也许:

list.txt

<div id="popupSales">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="popup">&times;</button>            
            <h3 class="modal-title" align="center">Nova Oportunidade</h3>            
        </div>

        <?= Form::open() ?>
        <div class="modal-body">
            <div class="row">

                <div class="col-sm-12" style="margin-top: 20px;">                   
                        <?= $widget->render() ?>                                       
                </div>

            </div>            
        </div>

        <div class="modal-footer" style="margin-top: 5px;">         
            <div class="loading-indicator-container">
                <button data-request="onCreateNew" class="btn btn-primary">
                            Cadastrar
                        </button> 

                <button
                    type="button"
                    class="btn btn-primary"
                    data-dismiss="popup">
                    Fechar
                </button>
            </div> 
        </div>
        <?= Form::close() ?>
</div>

因此

sdfs
sdfs
fg34
345
gn
4564

使用pathlib

with open('list.txt') as fileObj:
    print(list(fileObj)[-1])

输出

from pathlib import Path
print(Path('list.txt').read_text().splitlines()[-1])

答案 1 :(得分:0)

您写的是

  

我尝试了这种方法,但我认为这不是一个好选择,因为它不返回任何消息:

,然后要求使用read()的技术。但是,我认为您的方法是合理的并且确实有效(尽管我怀疑您正在读取的文件的最后一行是空行)。例如,这确实会打印文件的最后一行:

import os
with open('test.py') as auto:
    lines = auto.readlines()
    last_line = lines[-1]
    print(last_line)