Python: 在特定行打开并显示文本文件

2 投票
3 回答
2464 浏览
提问于 2025-04-16 07:08

我不太常用Python,但有时候会用它开发一些简单的工具,让我的生活更轻松。我最常用的工具是一个日志检查器/简单调试器,用于SAS。它会逐行读取SAS的日志,检查我列出的错误,并把找到的错误信息输出到标准输出(我是在RedHat Linux环境下运行Python 2.6)。除了错误信息,它还会打印出错误所在的行号(虽然这行号并不是特别有用)。

我真正想做的是,可以选择性地给这个脚本输入一个行号,然后让它在GVIM中打开SAS日志,并滚动到我指定的行号。我一直没找到实现这个功能的方法,虽然我在谷歌上查了很多次,但都没有找到解决办法。如果有人有好的主意,我会非常感激。谢谢!
Jeremy

3 个回答

1

根据你查看这些日志的频率和它们的复杂程度,花时间整理一个 errorformat 可能会很有帮助。这样你就可以利用Vim的快速修复列表,快速在错误之间跳转。

2

如果你想要第10行

>>> f = open('thefile.log')
>>> lines = f.readlines()
>>> lines[10]

或者一次性全部

>>> open('thefile.log').readlines()[10]

在 gvim 中打开

>>> import subprocess
>>> subprocess.call(['gvim', '-c', '10', 'thefile.log'])
3

一旦你得到了行号,你可以运行 gvim filename -c 12,这样就会直接跳到第12行(这是因为 -c <command> 的意思是“在加载第一个文件后执行 <command>”,所以 -c 12 就是说在加载文件后执行 :12)。

所以我不太确定在这种情况下你是否真的需要Python;直接把行号发给gvim可能就足够了。

撰写回答