python从文件中查找数据并输出

Python028

python从文件中查找数据并输出,第1张

#注意,这里的代码用单空格缩进

import re

#写上你的文件夹路径

yourdir=""

keywordA = "keywordA"

keywordB = "keywordA(\d+)"

files = [os.path.join(yourdir,f) for f in os.listdir(yourdir)]

with open("out.txt","w") as fo:

 for f in files:

  fname = os.path.basename(f)

  with open(f,"r") as fi:

   for line in fi:

    if line.strip():

     searchA = re.search(keywordA,line.strip())

     if searchA:

      searchB = re.search(keywordB,line.strip())

      if searchB:

       print(fname,serachB.groups()[0],sep="\t",file=fo)

可以用 difflib库,下面给一个例子,具体需求自己研究

假如在同一个目录下有a.txt, b.txt 两个文本文件

a.txt 内容

aaa

bbb

b.txt内容是

aaa

ccc

import difflib

a = open('a.txt', 'U').readlines()

b = open('b.txt', 'U').readlines()

diff = difflib.ndiff(a, b)

sys.stdout.writelines(diff)

结果是:

aaa

- bbb+ ccc

实际项目中经常遇到读取二进制问题,Python下读取二进制文件一般用Python的文件打开读写相关函数和struct.

1。获取文件名filename,可用对话框,也可以直接手写

2。打开文件,这里中是打开,像看书一样,只是打开书,还没有看里面的内容,可以看,也可以不看

binFile=open(filename,'rb')

3。那就看看吧,binFile现在就是书的名字了。这里我们读入4个字,如果read()将读入整个文件

context=binFile.read(4)

4。读入之后问题来了,context包含四个字(4Bytes),但这四个字是加密的(二进制)。这时要找翻译struct.unpack

realContext=struct.unpack(format,context)

5。format的就是加密规则了,由1,2,4,8个字节组成其他类型,或者其他类型的数组。

a,b,c,d=struct.unpack('4c',context)

读入四个字符

对应格式参考 www.jianshu.com/p/5a985f29fa81

6。打开文件后用完一定要关闭,和看书一个样,看完后要合上,不合上后果自己去想

binFile.close()

7。查找内容,文件内容可以一个一个字的按顺序读出,但如果已经知道内容在什么位置,可以用查找方式读出。

binFile.seek(100)

context=binFile.read(4)

读出100位置后面的4个字,(101,102,103,104)

8。Python还提供也一些高级读写功能,如整行读取等