- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这个问题的简短版本是:当您使用文本编辑器打开文件并搜索术语时,您可以在找到该术语后在显示灵活上下文的文件中移动。因此,作为一个直接的示例,如果您有一个日志文件,您可以使用 less mylog.log 并搜索/SALLY 打开它。这将带您到日志文件中第一次出现“SALLY”。然后,使用普通导航键(向上和向下箭头键、pg up/dwn 等),您可以看到单词“SALLY”出现之前和之后发生的情况。我想利用一个工具来提供相同的行为,但我研究过的工具似乎都不太正确。目前看来唯一的选择是编写我自己的方法来执行此操作,但这肯定是不对的。
这个问题的长版本:我有一堆日志文件散落在各处。我的正常工作流程的一部分涉及在这些日志文件中搜索值并从这些值周围的上下文中获取信息(值得注意的是,我不能假设上下文位于特定的行集中,也不知道,直到我看到重要的上下文是什么。)手动到处获取这些日志文件是很恶心的,我想告诉我的代码“寻找 SALLY”,代码应该给我一个位置列表(来自日志文件所在的已知位置列表) )其中出现“SALLY”。然后,我选择所需的日志文件,它会打开到第一次出现的“SALLY”,并且能够从该点开始在文件中导航。
我知道如何完成大部分工作,事实上,我可以并且已经实现了除了最后一点之外的所有内容。使用基本的 IO 操作我可以:
我不能做的是弄清楚如何让用户能够顺利地导航日志文件。允许他们在文件中上下移动,以便他们可以看到上下文。我可以并且已经调用了“less”(假设它在 *nix 系统上)并使用它的搜索行为,但这实际上不是我想要的行为。我想使用 Python 来完成这一切。
我看过Elastic Search(这似乎远远超出了我想要的),几个日志解析库(解析日志非常简单),只是试图找到其他类似问题的解决方案。我一直找不到任何有类似问题的人,更不用说解决方案了,考虑到 python 社区,这似乎不太可能。
我目前正在考虑实现某种自定义文件查看器。这看起来很愚蠢。我可以利用什么来实现此类功能?
最佳答案
所以,经过一番尝试后,我发现了一些对我来说非常有效的东西,希望它也对你有用。基本思想是,我们有某种迭代器(不是真正的迭代器,但因为我缺乏想象力,我将其称为迭代器),它跟踪您正在查看的范围并返回您正在查看的当前部分。
这只是一个快速而肮脏的解决方案,但我希望它能完成工作
from subprocess import call
def main():
fp = open('path/to/your/file')
f = fp.readlines()
fp.close()
myIter = MyIterator(f,12)
# ^replace with the actual index the line you want to look at
print myIter.current()
cmd = raw_input()
#Input is no optimal, but this is beyond the scope of your question
while cmd != "quit":
call(["clear"])
if cmd == "u":
myIter.previous()
elif cmd == "d":
myIter.next()
for line in myIter.current():
print line
cmd = raw_input()
class MyIterator():
def __init__(self,f,index):
self.f = []
for line in f:
#Otherwise you would have a blank line between every line
self.f.append(line.replace('\n',''))
self.upper_index = index-1
self.lower_index = index
def hasNext(self):
if self.upper_index > len(self.f):
return False
else:
return True
def hasPrevious(self):
if self.lower_index <= 0:
return False
else:
return True
def next(self):
self.upper_index += 1
return self.current()
def previous(self):
self.lower_index -= 1
return self.current()
def current(self):
return self.f[self.lower_index:self.upper_index]
if __name__ == "__main__":
main()
请注意,使用“u”表示向上一行,使用“d”表示向下一行。问题是,你还必须随后按 Enter 键。看here python 中 getch() 的实现
关于python - 搜索文件中的行并为用户提供灵活的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24515100/
我有以下几行代码: using XXX.PAD.PaidServices; using YYY= XXX.PAD.PaidServices.Judet; //// uncomment below fo
我正在寻找一种方法,让 LAN 中的客户端无需任何配置即可找到我的服务器应用程序的所有实例。我不想自己破解某些东西,而是想使用现有的解决方案。就个人而言,我需要用 Python 完成它,但我很乐意听到
我的“问题”或“挑战”有很多问题。但它们都不符合我的需求。好的,我开始了: 我想要一个保存可变属性的数据库。现在我将它们作为列名“硬编码”到数据库中(参见图片)。请参阅“颜色”和“尺寸”。但是如果我想
我正在为我的一个 friend 创建一个网站。我们得到了这些布局,我已经放了一个灵活的背景,可以缩放到当前的浏览器大小。但是放置在背景上的图标需要在缩放窗口时保持相对位置。意味着如果我调整窗口大小,让
案例 通常,您会使用 cellForRowAtIndexPath 委托(delegate)方法来设置单元格。单元格的信息集对于单元格的绘制方式和大小非常重要。 不幸的是,heightForRowAtI
我试图让下面的 div 变得灵活 div { min-width: 500px; max-width: 1000px; width:100%; height: 400px; margin-left:1
我在单元测试方面遇到问题。当我运行测试时,它以 "No tests found" 结束。我正在使用 AppCode 和 Quick/Nimble 框架进行单元测试,但它在 XCode 中也不起作用。
问之前,请理解我的英语不好。 我在 servlet 编程中使用 Class.forName(...) 类。当我访问 servlet 时,我从数据库中获得一行详细的 Controller 信息,指示要使
我创建了一个cron job在 GAE 灵活环境中,每 15 分钟自动运行一次。 但是在创建每个实例时,是否会为每个实例复制相同的 cron 作业?我对此不太确定。 最佳答案 不,不会为每个实例复制
div A 灵活且固定(位于窗口顶部),具有高 z-index,因此下方的元素可以在滚动时从下方通过。 div B 位于 div A 下方,我希望它“粘”在 div A 的底部,因为在调整窗口大小时高
我是 Quick/Nimble 的新手,所以我尝试了一个简单的单元测试: import Quick import Nimble class DarkSkyTests: QuickSpec {
我创建了一个演示。关于表格单元格的灵 active ,我需要一些帮助。 我有一些表格单元格,它们的宽度应该是固定的。 但单元格由标签组成,标签可以是长文本,也可以是短文本。 基于此标签,表格单元格应该
我非常熟悉在代码中需要“水平带”的网站 - 即使他们的内容固定在 960 像素以内,他们的背景也会向左和向右“延伸”。 我知道如何做这些,如果它们只有一种颜色,或者我可以用作背景的一张图片。 最近一位
我在自己编写的网站(无框架或 CMS)上使用 Cloudflare Flexible SSL。一切正常,现在我想在整个网站上使用 HTTPS。我在 Apache Web 服务器上使用 PHP。 我想知
我有这个 Java 接口(interface): public interface Box { public void open(); public void close(); } 这个接
所以我有一个“主要”功能系统,现在可以作为 CMS 使用:用户进入编辑器并从四个模板中选择一个。在模板中,他们单击可以添加图像、文本或两者的部分。 我有一个预览屏幕,可以向他们展示他们正在制作的东西,
下面的 HTML/CSS/Javascript (jQuery) 代码显示了 #makes 选择框。选择一个选项会显示带有相关选项的 #models 选择框。 #makes 选择框偏离中心,#mode
我正在使用固定高度的图像来填充具有渐变颜色的 div,方法如下:背景:透明 url(green_bg.gif) repeat-x scroll 0 0; 但是它只填充一个等于图像高度的高度。根据其中的
我的系统的 GUI 在 1366 X 768 分辨率下运行良好。当它以不同的分辨率显示时,我需要并排滚动,而它不应该这样。此外,当我尝试在 chrome 中按 ctr+- 时,div 和部分变得困惑。
我正在尝试在 google app engine 灵活环境中使用 python 编写日志。 我想使用默认的 python 日志记录库并使用处理程序进行日志记录。这是我的代码: import loggi
我是一名优秀的程序员,十分优秀!