Python 在循环中连接两个文件以创建新文件?

Python 在循环中连接两个文件以创建新文件?,python,bash,Python,Bash,我正在尝试合并两个列表。它们都位于名为list1.txt和list2.txt的文件中。我试图将list2.txt中的单词附加到list1.txt中。例如: list1.txt有数千个单词,如 苹果 兄弟 朋友 list2.txt有十几个单词,如 地壳 湖 雨 我想得到一个输出,它从list2.txt获取所有单词,并将它们连接到list1.txt中的每个单词。因此,输出将如下所示: 苹果锈 苹果糖 苹果粉 兄弟信任 兄弟姐妹 等等,我不知道该怎么做。非常感谢您的帮助。您可以使用zip: 它所做的是

我正在尝试合并两个列表。它们都位于名为list1.txt和list2.txt的文件中。我试图将list2.txt中的单词附加到list1.txt中。例如:

list1.txt有数千个单词,如

苹果 兄弟 朋友 list2.txt有十几个单词,如

地壳 湖 雨 我想得到一个输出,它从list2.txt获取所有单词,并将它们连接到list1.txt中的每个单词。因此,输出将如下所示:

苹果锈 苹果糖 苹果粉 兄弟信任 兄弟姐妹 等等,我不知道该怎么做。非常感谢您的帮助。

您可以使用zip:

它所做的是,打开、解析它们并将其写入输出文件

编辑:这个问题已经过投票表决,所以我认为这对你很有效,但再看看你的问题,我发现你需要一个不同的输出。修订后的守则如下:

output = open("output.txt", 'a')
file1 = open('file1.txt')
file2 = open('file2.txt')
for word in file1:
    for second_word in file2:
        output.write(word + second_word + "\n")
    file2.seek(0)
output.close()
file1.close()
file2.close()
对于文件1中的每个单词,它将遍历文件2中的所有单词并将它们相加。然后转到file1中的下一个单词,依此类推。

使用join获得笛卡尔积,使用tr消除定界空间:

$ join -o 1.1,2.1 -j 666 file1 file2 | tr -d ' '
一些输出:

applecrust
applelake
applerain
...

解决方案是滥用文件中没有字段666的事实,并在一个不存在的字段上进行连接,生成文件中项目的笛卡尔积。

我不能保证这将为您提供特定的顺序,但:

from itertools import product

with open("output.txt", 'w') as output:
    with open('file1.txt', 'r' ) as file1, open('file2.txt','r') as file2:
       for word1, word2 in product(file1, file2):
           output.write(word1.strip() + word2.strip() + "\n")

itertools.product将为您提供第一个文件中的单词和第二个文件中的单词的所有组合。

我认为这可能会对您有所帮助

List = []
list1 = open('list1.txt','r')
total = ''
for i in list1:
    List.append(i.strip())
list1.close()
for append_text in List:
    
    list2 = open('list2.txt','r')    
    for i in list2:
        final = str(append_text)+str(i)
        total = total+final
    total = total+'''\n'''
    list2.close()
print(total)

我不认为这能满足你的需要-你会得到:applecrust Brother Rake Friendline你不会得到任何其他的。啊,我明白了。没有看到。编辑了我的答案。在第二个for循环第一次退出后,您的第二个代码段将立即耗尽第二个文件。唯一可行的方法是使用itertools.product,或者将每个文件中的所有内容读入列表并执行两个循环。谢谢。这就成功了。只是出于好奇,如果我想添加第三个列表,会是什么样子?好的,我可以帮你,但是你能解释一下你想要第三个列表做什么吗?如果我的答案对你有帮助,请记下我的答案谢谢,@James Brown。这很有帮助。
List = []
list1 = open('list1.txt','r')
total = ''
for i in list1:
    List.append(i.strip())
list1.close()
for append_text in List:
    
    list2 = open('list2.txt','r')    
    for i in list2:
        final = str(append_text)+str(i)
        total = total+final
    total = total+'''\n'''
    list2.close()
print(total)