Как дописать в строку много строк из другого файла..?
Здравствуйте! Задача следующая. Есть некая строка. И есть некий .txt файл, который лежит в /home.
Необходимо, в определенном месте этой строки построчно начать записывать данные из .txt файла, и по окончанию создать файлик, в котором будет... ну примерно так.
Попытаюсь объяснить наглядно.
есть строка: 45788-4rbf-77458-ik-90-98
и есть
.txt файл, который содержит:
@96
@97
@98
@99
@100
... и так далее.
Необходимо: чтобы данные из .txt файла были записаны в строке, ну, например в этом месте:
45788-4rbf-77458-ik-90-98
-------------^
и по завершению операции получить файл, который бы содержал вот это:
45788-4rbf@96-77458-ik-90-98
45788-4rbf@97-77458-ik-90-98
45788-4rbf@98-77458-ik-90-98
45788-4rbf@99-77458-ik-90-98
45788-4rbf@100-77458-ik-90-98
и так далее.
Спасибо большое, заранее!
Если можно, пожалуйста, на перле. Отдаю предпочтение именно этому языку.
в vim - e , запущенном на ваш тхт файл -- совсем просто:
Сидя в первой строке тхт -шного файла, задаём команду:
:.,$s/^/45788-4rbf//gp
это замена ( от substitute, а . И , -- это местА -- от тек мЕста до конца файла) начала строки,
потом вверх и повторить, но уже замена в конец каждой строки -- :
1G
:.,$s/$/-77458-ik-90-98//gp
это из школьного курса по регулярным выражениям и по редактору vim
with open('D:\dest.txt', 'a') as dest:
with open('D:\list.txt', 'r') as file:
for line in file.readlines():
line = line.replace('\n','')
dest.write('45788-4rbf{}-77458-ik-90-98\n'.format(line))
PerlNecroHacker: вы из какого века пишете, что не можете определить в строке "D:\dest.txt' путь к файлу? ) Вот так, если будет проще:
with open('/home/user/source_file', 'a') as dest:
with open('/home/user/dest_file', 'r') as file:
for line in file.readlines():
line = line.replace('\n','')
dest.write('45788-4rbf{}-77458-ik-90-98\n'.format(line))
Александр:
....
with open('D:\dest.txt', 'a') as dest:
with open('D:\list.txt', 'r') as file:
....
Кстати эти две инструкции with можно преобразовать в одну:
with open(...., 'a') as dest, open(...., 'r') as file:
....
Вот этот вариант:
всё без ошибок как-бы, но output файла после выполнения программы не вижу
#!/usr/bin/perl
use Modern::Perl;
use Readonly;
use File::Slurper qw( read_text write_text );
Readonly my $STR => "foo-bar-baz-foo-bar";
Readonly my $OFFSET => 10;
Readonly my $INFILE => "/home/in-black/input.txt";
Readonly my $OUTFILE => "/home/in-black/output.txt";
my @insertions = split( m/\n/, read_text($INFILE) );
my $result = '';
for my $insertion ( @insertions ) {
$result .= substr($STR, 0, $OFFSET). $insertion. substr($STR, $OFFSET). "\n";
}
PerlNecroHacker: проверьте, или поставьте пакеты Modern::Perl и File::Slurper, они не входят в поставку Perl (можно через "cpan имяпакета"). Мне просто лень было писать однострочник средствами Perl distro only.