Задать вопрос
@MaximVo

Как достать новые строки из текстового файла?

Есть master.txt с содержимым:
a
b
c
Есть file.txt с содержимым:
c
d
e
Как сохранить строки:
d
e
В файл new.txt и также создать файл newmaster.txt c содержимым
a
b
c
d
e
  • Вопрос задан
  • 392 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
AlexMaxTM
@AlexMaxTM
Ну хоть еще один тег допишите кроме Windows. Сделать быстро и просто в Windows без использования других средств очень не просто. Это можно делать в Тотал командере, сравнивая два файла, можно notepad++. но проще всего написать скрип (это всего несколько строк кода). Для меня проще всего это будет сделать на perl (он у меня стоит на Windows). Но могу сделать и на некоторых других языках.
Ответ написан
Комментировать
@Ilya33
для perl'а быстренько набросал:

use strict;
use warnings;

use Array::Utils qw(:all);


open(my $fh_m, '<', 'master.txt') or
    die "Не смог открыть файл :(";
open(my $fh_f, '<', 'file.txt') or
    die "Не смог открыть файл :(";

open(my $fh_n, '>', 'new.txt') or
    die "Не смог открыть файл :(";
open(my $fh_nm, '>', 'newmaster.txt') or
    die "Не смог открыть файл :(";

my @m = map {s/\r?\n?$//r} <$fh_m>;
my @f = map {s/\r?\n?$//r} <$fh_f>;

my @diff = array_minus(@f, @m);

foreach(@m) {
    print $fh_nm "$_\n";
}

foreach(@diff) {
    print $fh_n "$_\n";
    print $fh_nm "$_\n";
}


perl под windows можно взять осюда или отсюда
Ответ написан
Комментировать
@ArtemZA
Студент
на Python
first = 'master.txt'
second = 'file.txt'
directory = 'C:\\new\\'

A = []
B = []
C = []
D = []


def FileRead(file):
    f = open(directory + file , 'r' , encoding = "utf-8")
    for i in f:
        if q == 0:
            A.append(i)
        if q == 1:
            B.append(i)
    f.close()
   
def FileWrite(file,spisok):
    f = open(directory + file , 'w')
    for line in spisok:
        f.write(line + '\n')
    f.close()
        
  
for q in range(0,2):
    if q == 0:
        FileRead(first)
    if q == 1:
        FileRead(second)

A = [line.rstrip() for line in A]
B = [line.rstrip() for line in B]
for i in A:
    if not i in B:
        print(i)
        C.append(i)

for i in B:
    if i in A:
        print(i)
        C.append(i)

for i in B:
    if not i in A:
        print(i)
        C.append(i)
        D.append(i)

FileWrite('newmaster.txt', D)
FileWrite('new.txt',C)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы