定义一个函数,在Python中用另外两个文本文件创建带有字符串的文本文件 [repicate] 。

问题描述 投票:-1回答:1

我还有一个问题。我以为我明白我在这个任务中做了什么,但显然不是。我们得到了两个 TXT 文件,我们应该定义一个函数,它需要三个参数,它们都是 TXT 文件。第一个文件看起来是这样的。

hello thank you (etc.)

而第二个文件

hola gracias (等)

我们应该定义这个函数,使这两个文件组成一个新的文件,就像这样。

hello: hola thank you: gracias (etc.)

当第一个文件和第二个文件中的项目数量不一样时,我们应该中断函数并返回一个错误。这一部分似乎很好用,我的程序也创建了一个新的TXT-文件,但它总是空的。自己看看吧。

def create_dictionary(file1, file2, newfile):
    with open(file1, encoding='utf-8') as fobj_1:
        with open(file2, encoding='utf-8') as fobj_2:
            a = fobj_1.readlines()
            b = fobj_2.readlines()
            if len(a) != len(b):
                return "The input files are not compatible."
            else:
                with open(newfile, 'w', encoding='utf-8') as fobj_new:
                    for line1 in fobj_1:
                        out1 = line1.rstrip()
                        for line2 in fobj_2:
                            out2 = line2.rstrip()
                        fobj_new.write(out1 + ":" + out2 + "\n")
                return "Successfully created file."

对于两个不匹配的文件,程序运行得很好 但是 "els: "条件会创建一个空文件。我在这里遗漏了什么非常明显的东西?

python dictionary text-files
1个回答
0
投票

在输入文件上循环会耗尽它们的数据。试图 read 又需要你倒带,或者关闭并重新打开文件。但你已经在内存中拥有了数据,在变量的 ab;在它们上面循环。

for ind in len(a):
    first = a[ind].strip()
    second = b[ind].strip()
    out1.write(f'{first}:{second}\n')

也请注意如何有一个单一的循环;你的尝试将写下第一个元素在 a 后面的每一个元素 b 那么,第二要素 a 后面的每一项内容都是 b、等。

© www.soinside.com 2019 - 2024. All rights reserved.