【问题标题】:Define a function that creates text file with strings from two other text files in Python [duplicate]定义一个函数,该函数使用 Python 中的其他两个文本文件中的字符串创建文本文件 [重复]
【发布时间】:2020-06-17 07:29:04
【问题描述】:

我还有一个问题。我以为我明白我在这个任务中做了什么,但显然没有。我们有两个 TXT 文件,我们应该定义一个接受三个参数的函数,它们都是 TXT 文件。第一个文件是这样的:

你好
谢谢(等等)

和第二个文件:

你好
感谢(等等)

我们应该定义函数,以便将这两个文件组合成一个新文件,如下所示:

你好:你好
谢谢:gracias(等等)

如果第一个和第二个文件中的项目数不一样,我们应该破坏函数并返回错误。那部分似乎工作正常,我的程序还创建了一个新的 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."

对于两个不匹配的文件,程序运行良好,但“else:”条件会创建一个空文件。我在这里遗漏了什么非常明显的事情?

【问题讨论】:

  • 您已经使用 readlines 遍历了文件,因此光标位于文件末尾。使用 a 和 b 代替 fobj_1 和 fobj_2。请注意,这将显示您的代码存在不同问题,但请继续解决它们,直到没有问题为止!

标签: python dictionary text-files


【解决方案1】:

循环输入文件会耗尽它们的数据。再次尝试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 中的每个元素,等等。

【讨论】:

    猜你喜欢
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多