一、使用场景

  某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具。

本例的演示则提取配置文件中的【姓名:黄蓉 女 九阴真经、姓名:郭靖 男 弹指神功】两行读取出来,读取其他内容也可以,更改相应参数即可。

二、实验文件

  测试脚本:fielread.py

  配置文件:john.conf

三、测试脚本代码

#! /usr/bin/env python3
# -*- coding:UTF- -*- from tkinter import *
import tkinter ss = input('请输入搜索内容的开始首字符:')
es = input('请输入搜索内容的结束首字符:')
fp = input('请输入要搜索文件的路径:') def fetch(startStr,endStr,filePath):
newLi = []
with open(filePath,'r',encoding='utf-8') as f :
flag = False
for line in f:
if line.strip().startswith(startStr):
flag = True if line.strip().startswith(endStr):
flag = False if flag and line.strip():
newLi.append(line.strip())
return newLi info = fetch(ss,es,fp) # 调用fetch函数进行内容匹配,结果返回列表保存到info中 # []控制台打印输出
result = '\n'.join(info)
print(result) # []alert弹窗打印输出
root = Tk() # 创建窗口对象的背景颜色
new_info = Listbox(root)
for item in info:
new_info.insert(,item)
new_info.pack()
root.mainloop()

四、配置文件内容

#
# This file is part of John the Ripper password cracker,
# Copyright (c) -,- by Solar Designer
#
# void init()
{
password_length = ; /* Change this to match config */ int c, i; c = ''; i = ; while (c <= '') numbers[i++] = c++;
c = 'a'; i = ; while (c <= 'z') lowers[i++] = c++;
c = 'A'; i = ; while (c <= 'Z') uppers[i++] = c++; /* symbols */
i = ;
symbols[i++] = '!'; symbols[i++] = '@'; symbols[i++] = '#'; symbols[i++] = '$';
symbols[i++] = '%'; symbols[i++] = '^'; symbols[i++] = '&'; symbols[i++] = '*';
symbols[i++] = '('; symbols[i++] = ')'; symbols[i++] = '~'; symbols[i++] = '-'; boundaries_charclass[i++] = ; boundaries_charclass[i++] = ;
boundaries_charclass[i++] = ; boundaries_charclass[i++] = ; 姓名:黄蓉 女 九阴真经
姓名:郭靖 男 弹指神功 备注:
boundaries_numbers =
boundaries_numbers =
boundaries_numbers =
boundaries_numbers =
boundaries_numbers = boundaries_letters[i++] = ; boundaries_letters[i++] = ;
boundaries_letters[i++] = ; boundaries_letters[i++] = ;
boundaries_letters[i++] = ; boundaries_letters[i++] = ;
} # End of john.conf file.
# Keep this comment, and blank line above it, to make sure a john-local.conf
# that does not end with \n is properly loaded.

五、执行效果 

Console:

请输入搜索内容的开始首字符:姓名
请输入搜索内容的结束首字符:备注
请输入要搜索文件的路径:./john.conf
姓名:黄蓉 女 九阴真经
姓名:郭靖 男 弹指神功

  

python工具 - 读取文件的部分指定内容并输出到外置窗口的更多相关文章

  1. shell读取文件的每一行内容并输出【转】

    写法一: #!/bin/bash while read line do echo $line done < file(待读取的文件) 写法二: #!/bin/bash cat file(待读取的 ...

  2. python提取批量文件内的指定内容

    目标文件夹: 文件内容: 实现代码: # -*- coding:utf-8 -*- # __author__ :kusy # __content__:get ssr info from html fi ...

  3. (转)shell:读取文件的每一行内容并输出

    写法一:----------------------------------------------------------------------------#!/bin/bashwhile rea ...

  4. shell 读取文件的每一行内容并输出

    (1)#!/bin/bash while read linedo    echo $linedone < file (2)#!/bin/bash cat file  | while read l ...

  5. 在一个exe文件中查找指定内容,找到则返回起始位置, 否则返回0

    //在一个exe文件中查找指定内容,找到则返回起始位置, 否则返回0//如果某字符串, 直接传入字符串进来//如果要查找16进制,则用如下格式传参进来: #$1A#$2A#$3A function F ...

  6. python在读取文件时出现 'gbk' codec can't decode byte 0x89 in position 68: illegal multibyte sequence

    python在读取文件时出现“UnicodeDecodeError:'gbk' codec can't decode byte 0x89 in position 68: illegal multiby ...

  7. python工具 - 批量文件重命名

    日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名. 场景:某文 ...

  8. python中读取文件的read、readline、readlines方法区别

    #读取文件所有内容,返回字符串对象,python默认以文本方式读取文件,遇到结束符读取结束. fr = open('lenses.txt')read = fr.read()print(type(rea ...

  9. shell awk读取文件中的指定行的指定字段

    1.awk功能和实用形式 awk指定读取文件中的某一行的某个字段 awk      可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下 awk    'NR==m,NR==n {pr ...

随机推荐

  1. 069 Hue协作框架

    一:介绍 1.官网 官网:http://gethue.com/ 下载:http://archive.cloudera.com/cdh5/cdh/5/,只能在这里下载,不是Apache的 手册:http ...

  2. POJ2417 Discrete Logging【BSGS】(模板题)

    <题目链接> 题目大意: P是素数,然后分别给你P,B,N三个数,然你求出满足这个式子的L的最小值 : BL== N (mod P). 解题分析: 这题是bsgs算法的模板题. #incl ...

  3. java 利用Future做超时任务处理

    Callable<String> task = new Callable<String>() { @Override public String call() throws E ...

  4. java 客户端调用 go grpc服务端问题总结

    1.网络不通,无法调试. 2.proto文件更改后要及时通知客户端. 3.grpc跨语言调用多语言使用很方便.

  5. WinForm timer 控件

    timer 控件:按用户定义的时间间隔引发的事件 属性: Enabled 是否启用: Interval 事件发生的事件间隔,单位是毫秒 事件只有一个:Tick 事件经过指定的时间间隔发生 打开一个窗口 ...

  6. codeforces1027F. Session in BSU

    题目链接 codeforces1027F. Session in BSU 题解 二分图匹配就fst了....显然是过去的,不过tle test87估计也pp了,好坑 那么对于上面做匹配的这个二分图分情 ...

  7. C++ 模板应用举例_模板实现STL类(堆栈)

    //stack集合类是一个简单的堆栈的实现. //这里有两个模板参数,T和size,指定堆栈中的元素类型和堆栈中项数的最大值. //push 和 pop成员函数添加和删除堆栈中的项,并在堆栈底部增加. ...

  8. vscode使用wsl调试代码

    第一步在WSL中配好环境 第二步安装CodeRunner即可,在用户配置中加入如下行: "terminal.integrated.shell.windows": "C:\ ...

  9. 机器学习笔记(2):线性回归-使用gluon

    代码来自:https://zh.gluon.ai/chapter_supervised-learning/linear-regression-gluon.html from mxnet import ...

  10. c++对象工厂

      一.简单工厂 #pragma once struct IObjectA { virtual void Test1()=0; }; class ObjectA:public IObjectA { p ...