一、使用场景

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

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

二、实验文件

  测试脚本: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. UVA 11426 (欧拉函数&&递推)

    题意:给你一个数N,求N以内和N的最大公约数的和 解题思路: 一开始直接想暴力做,4000000的数据量肯定超时.之后学习了一些新的操作. 题目中所要我们求的是N内gcd之和,设s[n]=s[n-1] ...

  2. PopupWindow分享页面

    效果图 步骤: 1.布局中添加分享按钮 2.画出分享页面 3.设置分享页面animator进出动画,并在style.xml中配置 4.MainActivity中添加方法 *画出布局 主页面: < ...

  3. POJ 2409 Let it Bead【Polya定理】(模板题)

    <题目链接> 题目大意:用k种颜色对n个珠子构成的环上色,旋转.翻转后相同的只算一种,求不等价的着色方案数. 解题分析: 对于这种等价计数问题,可以用polay定理来解决,本题是一道pol ...

  4. poj2184 Cow Exhibition【01背包】+【负数处理】+(求两个变量的和最大)

    题目链接:https://vjudge.net/contest/103424#problem/G 题目大意: 给出N头牛,每头牛都有智力值和幽默感,然后,这个题目最奇葩的地方是,它们居然可以是负数!! ...

  5. Leaf:美团分布式ID生成服务开源

    Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自德国哲学家.数学家莱布尼茨的一句话:“There are no two identical leaves in the world.”L ...

  6. jQueryPrint 的简单使用

    jQueryPrint 的简单使用 一.为什么要使用 jQueryPrint?  1.当然是方便的要死尼,相比于其他的方法. 2.打印整个页面或者局部页面都是非常的可以的,使用很方便. 3.如果要导出 ...

  7. Django-自定义增删改查组件的一些体会

    1.路由系统 namespace,用于区分相同name的url,通过namespace为url添加一个前缀 反向生成URL的时候 reverse('namespace:name') {% url &q ...

  8. restful开发API

    http://blog.csdn.net/kkkloveyou/article/details/21391033 小示例http://blog.csdn.net/u011645059/article/ ...

  9. unity3d脚本语言中的引用类型

    在之前的文文里有说到,值类型和引用类型,那么这会就单独说下引用类型: Unity3D中的C#语言提供了专门的类型来为开发者提供使用C#开发游戏的便利条件: 在该引擎中,使用UnityEngine命名空 ...

  10. Java获取系统日期时间

    方法一:利用Calendar类来获取当前日期和时间,代码如下: /** * 获取系统时间 * @return */ public String getDate(){ Calendar calendar ...