Прочтите 2 файла, добавьте что-нибудь между каждой строкой - PullRequest
0 голосов
/ 21 июня 2020

Вот мой код:

    eeee = input('\nWhat do you want to combine each other with? ')
    first = []
    second = []
    with open('First.txt', 'r') as f:
        for line in f.readlines():
            first.append(line)
    with open('Second.txt', 'r') as f:
        for line in f.readlines():
            second.append(line)
    with open('NewStuff.txt', 'a') as f:
        for thing in first:
            for thing2 in second:
                f.write(thing + str(eeee) + thing2)

Я хочу получить первую строку из file1, добавить что-нибудь в ее середину (независимо от того, как вводится eeee), а затем распечатать первую строку из file2, а затем получить вторая строка и повторить

Ответы [ 4 ]

1 голос
/ 21 июня 2020

Вы можете попробовать что-нибудь подобное, используя zip и , открывая несколько файлов :

eeee = input('\nWhat do you want to combine each other with? ')


with open('First.txt', 'r') as f1, open('Second.txt', 'r') as f2,open('NewStuff.txt', 'a') as fnew:
    for first, second in zip(f1.readlines(),f2.readlines())
            fnew.write(first.replace('\n','')+' '+ str(eeee)+' '+ second)
0 голосов
/ 21 июня 2020

Поскольку вы не объединяете несколько строк файла First.txt вместе или несколько строк файла Second.txt друг с другом, я бы не стал использовать любое решение , включающее readlines(), поскольку нет причин для полностью прочитать любой файл в память.

Максимум, что вам нужно прочитать в любой момент, - это по одной строке каждого файла. Я бы предложил решение в следующих строках:

eeee = input('\nWhat do you want to combine each other with? ')

with open('First.txt') as left, open('Second.txt') as right:
    with open('NewStuff.txt', 'a') as output:

        for line in left:
                output.write(line.rstrip('\n') + eeee + right.readline())

И избегайте любого решения, которое сохраняет ваши вызовы на readlines() или вводит новые. Обратите внимание, что мы rstrip('\n') заканчиваем левую строку, так что в итоге получаем одну строку вывода. Теперь вам нужно подумать, что произойдет, если два входных файла не содержат одинакового количества строк.

0 голосов
/ 21 июня 2020

Ваш код почти правильный, просто измените эту часть:

with open('NewStuff.txt', 'a') as f:
    for thing in first:
        for thing2 in second:
            f.write(thing + str(eeee) + thing2)

на:

with open('NewStuff.txt', 'a') as f:
    for thing,thing2 in zip(first,second):
        f.write(thing + str(eeee) + thing2) 
0 голосов
/ 21 июня 2020

Поскольку вам нужно str(eeee) для всех строк в second, вы можете просто добавить его в начало всех элементов этого списка.

third = [str(eeee)+i for i in second]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...