Начнем с имен входных файлов:
files = ('raz.txt','dwa.txt')
И некоторые вспомогательные функции. Это генератор, который читает все слова из файла,
def read(filename):
with open(filename) as f:
for line in f:
if len(line)>0:
yield line.strip()
И это записывает последовательность в файл.
def write(filename, lines):
with open(filename, 'w') as f:
f.write('\n'.join(lines))
Итак, давайте создадим два генератора — по одному для каждого входного файла.
words = [read(filename) for filename in files]
Затем давайте преобразуем этот список генераторов в список наборов
wordSets = map(set, words)
Теперь у нас есть список из двух наборов, содержащих только уникальные слова из каждого файла.
Давайте создадим еще один набор, содержащий слова, присутствующие во всех входных файлах, путем пересечения их наборов:
commonWords = set.intersection(*wordSets)
И время для перезаписи.
for filename in files:
Так как мы хотим сохранить в точно такой же файл, то, к сожалению, нам нужно сначала прочитать все его содержимое в память, а потом уже оттуда писать. (Если вам нужен вывод в разных файлах, вам не нужно буферизовать файл.
Давайте создадим генератор считывателей, а затем прочитаем все это в память, обернув его list()
:
lines = list(read(filename))
а затем записать слова обратно в данный файл по порядку, но только если они не в commonWords
write(filename, (word for word in lines if word not in commonWords))
Вход:
раз.txt
gedit
google chrome
git
vim
foo
bar
два.txt
firefox
svn
foo
vim
Выход:
раз.txt
gedit
google chrome
git
bar
два.txt
firefox
svn
Дубликаты были удалены из обоих.
person
Kos
schedule
23.06.2012
dpkg --get-selection
(file1.txt), и есть еще один список, сделанный мной самостоятельно (file2.txt), этот файл содержит то, что я помню, что я установил. После переустановки Ubuntu я установил программное обеспечение, увидев file2.txt. Теперь необходимо установить оставшееся содержимое обоих файлов. Теперь остальная часть в моем вопросе.... - person Santosh Kumar   schedule 23.06.2012