0

我正在编写代码,首先将两个 .txt 文件读入一个程序,然后我必须合并这两个 .txt 文件并使用生成的文件执行多个任务。

到目前为止,我可以读取文件并将它们分配给变量,并且可以分别打印这两个库,但是我不知道如何组合这些文件。

到目前为止,我编写的代码如下所示:

def ReadAndMerge():
    library1=input("Enter 1st filename to read and merge:")
    library2=input("Enter 2nd filename to read and merge:")
    namelibrary1= open(library1, 'r')
    namelibrary2= open(library2, 'r')
    library1contents=namelibrary1.read()
    library2contents=namelibrary2.read()
    print(library1contents)
    print(library2contents)
    combinedlibraries=(library1, 'a')
    # ^ this didnt work, but it was what i have tried so far
    combinedlibraries.write(library2)
    print(combinedlibraries)
    return

ReadAndMerge()

我尝试将库附加到另一个库,但 Python 似乎不喜欢我正在做的事情。

库 1 如下所示:

Bud Abbott 51 92.3
Mary Boyd 52 91.4
Hillary Clinton 50 82.1

库 2 如下所示:

Don Adams 51 90.4
Jill Carney 53 76.4
Randy Newman 50 41.2

有谁知道结合这两个库的方法?

这样当我打印组合库时,它看起来像

Bud Abbott 51 92.3
Mary Boyd 52 91.4
Hillary Clinton 50 82.1
Don Adams 51 90.4
Jill Carney 53 76.4
Randy Newman 50 41.2

这些都是简单的库——如果有人能指出一种方法来测试可能超过 50 个名称的更大的库并将这两个库结合起来,那就太好了。

4

1 回答 1

1

正如@PedroRomano 评论的那样,您的问题的一部分似乎是您在open您说不起作用的行中错过了一个呼叫。但是,后面的代码仍然不能正常工作。

我还认为覆盖您的一个起始数据文件可能是一个坏主意。它使您的代码不再具有幂等性,因此多次运行它会继续产生副作用。

这是我的建议:

def ReadAndMerge():
    library1filename = input("Enter 1st filename to read and merge:")
    with open(library1filename, 'r') as library1:
        library1contents = library1.read()

    library2filename = input("Enter 2nd filename to read and merge:")
    with open(library2, 'r') as library2:
        library2contents = namelibrary2.read()

    print(library1contents)
    print(library2contents)

    combined_contents = library1contents + library2contents  # concatenate text

    print(combined_contents)

    combined_filename = "combined.txt"    # ask user for name here?
    with open(combined_filename, "w") as combined_file:
        combined_file.write(combined_contents)

这些with语句负责在您完成文件后关闭文件(这在您编写时尤其重要)。此外,它为合并的数据使用特定的文件名,而不是添加到源文件之一。

不过,您可能要考虑的一个问题是,您是否真的需要将组合数据集写入文件。如果您只是要重新打开该文件并再次读取数据,则可以跳过中间步骤并直接使用组合数据。return combined_contents如果这是您想要的,您可以替换上面代码的最后三行。

最后,与您的实际问题几乎无关的一点:将您的数据称为“库”是一个坏主意。该词在计算机编程中具有非常特定的含义(即:您从项目外部加载的软件),并且使用它来引用您的数据会令人困惑。

于 2012-11-19T02:21:42.377 回答