unix Python -比较多个文本文件

7fyelxc5  于 2022-11-23  发布在  Unix
关注(0)|答案(1)|浏览(151)

我使用以下命令获取以abc开头的文本文件列表

filename = "ls abc*.txt"
os.system(filename)
print filename

从上述命令获得的结果为

abc_first.txt 
abc_second.txt 
abc_third.txt

我有一个名为“test.txt”的文本文件,其中包含一些内容
我需要将test.txt的内容与上面的每个文本文件进行比较,并递归打印匹配的行和文件名
例如:
test.txt具有以下内容

123
456
789

abc_first.txt具有以下内容

789
132
111

abc_second.txt具有以下内容

123
abc
ccf

结果需要

filename: abc_first.txt
common : 789

filename : abc_second.txt
common: 123

谁能帮我弄一下python?

1qczuiv0

1qczuiv01#

类似的问题昨天也出现过。
读取文件,拆分为行列表,转换为set(),只需执行set1 & set2即可
我使用io只是为了在内存中创建文件--因此每个人都可以简单地复制和运行它--但是您应该使用open()

import io

text0 = '''123
456
789'''

text1 = '''789
132
111'''

text2 = '''123
abc
ccf'''

#with open("test.txt") as fh:
with io.StringIO(text0) as fh:
    lines = fh.read().strip().split('\n')
    set0 = set(lines)

#with open("abc_first.txt") as fh:
with io.StringIO(text1) as fh:
    lines = fh.read().strip().split('\n')
    set1 = set(lines)

#with open("abc_second.txt") as fh:
with io.StringIO(text2) as fh:
    lines = fh.read().strip().split('\n')
    set2 = set(lines)

print( set0 & set1 )
print( set0 & set2 )

结果:

{'789'}
{'123'}

相关问题