Python: 在特定行打开并显示文本文件
我不太常用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可能就足够了。