Сравнить строки двух файлов
Я получил названия всех файлов с расширением .php из директорий, которые мне нужны, при помощи этого кода:
import os
os.chdir("/opt/lampp/htdocs/phpBB3")
for root, dirs, files in os.walk(".", topdown = False):
for name in files:
if name.endswith('.php'):
print(os.path.join(root, name))
for name in dirs:
if name.endswith('.php'):
print(os.path.join(root, name))
и записал их в файл, когда запускал скрипт:
$ python3 search.py > allfiles.txt
У меня есть ещё один test.txt с именами файлов, нужно в allfiles.txt оставить только те названия файлов, которые есть в test.txt
Как мне это реализовать?
Ответы (1 шт):
Предполагая, что у вас уже открыты файлы
files_to_test = test.readlines()
all_files = allfiles.readlines()
intersection = list(set(files_to_test) & set(all_files))
После этого в списке intersection останутся только строки, встретившиеся в обоих файлах.
Пояснение
set в Python представлят множество в математическом смысле. Одна из операций над множествами - пересечение. Результатом этой операции является множество, содержащее элементы встречающиеся в обоих операндах. Соответсвенно, в python класс set реализует операцию "пересечение" через оператор &.