简体   繁体   English

多个输入文件的多个查询

[英]Multiple queries for multiple input files

I have developed a code to "capture" in several input.txt files those lines with a especific query, but now I would like to find several queries.我已经开发了一个代码来在几个 input.txt 文件中“捕获”那些带有特定查询的行,但现在我想找到几个查询。 For instance "find: AA or CD or BC" in the input file.例如在输入文件中“查找:AA 或 CD 或 BC”。

I have not found any way to do so.我还没有找到任何方法。 Any suggestion would be so helpful!任何建议都会很有帮助!

Input file输入文件

AA
AB
AC
CD
CD
AA
BC

Output file Output 文件

AA
CD
CD
AA
BC

This is the code I am using now:这是我现在使用的代码:

import fileinput
from collections import deque
output_file = 'output.txt' 
buscado = 'AA'

contexto = deque([], 4)  # for keeping the last 4 lines


with open(output_file, "w") as f_out:
    for line in fileinput.input(files=["input.txt", "input2.txt"]):
        contexto.append(line)       
        if len(contexto) < 4:      
            continue
        if buscado in contexto[1]:  
            f_out.writelines(contexto) 

You can do like this:你可以这样做:

output_list = []
with open('data.txt', 'rt') as f:
    data = f.readlines()
for line in data:
    if line.strip('\n') in ("AA", "CD", "BC"):
        output_list.append(line.strip('\n'))
print(output_list)

Output: Output:

['AA', 'CD', 'CD', 'AA', 'BC']

[EDIT] Using fileinput [编辑] 使用文件输入

If you want to use fileinput module to parse multiple files and to know in each file what keys are found it you can try like this:如果你想使用 fileinput 模块来解析多个文件并知道在每个文件中找到了哪些键,你可以这样尝试:

import fileinput
 
with fileinput.FileInput(files=('data.txt', 'data1.txt'), mode='r') as input:
    for idx, line in enumerate(input):
        if input.isfirstline() == True:
            # Indicate the file name
            print(f'Reading file : {input.filename()}')
        if line.strip('\n') in ("AA", "CD", "BC"):
            print(line.strip('\n'))

Content of data.txt data.txt的内容

AA
AB
AC
CD
CD
AA
BC

and

Content of data1.txt data1.txt的内容

AA
AB
AC
CD
CD
AA
BC
AA
BB
DD
FF
BC
BC

Output: Output:

Reading file : data.txt
AA
CD
CD
AA
BC
Reading file : data1.txt
AA
CD
CD
AA
BC
AA
BC
BC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM