Python 是什么导致我的代码增大了文本文件的大小?

Python 是什么导致我的代码增大了文本文件的大小?,python,Python,我已经编写了一个Python程序来遍历目录中的文本文件,并使用添加的行号创建每个文件的新版本。以下是程序中的相关功能: def create_lined_ver(filename): new_text = [] with open(filename + ".txt", "r+") as f: text = f.readlines() for (num, line) in enumerate(text): new_text.

我已经编写了一个Python程序来遍历目录中的文本文件,并使用添加的行号创建每个文件的新版本。以下是程序中的相关功能:

def create_lined_ver(filename):
    new_text = []

    with open(filename + ".txt", "r+") as f:
        text = f.readlines()
        for (num, line) in enumerate(text):
            new_text.append("[{0}]: ".format(num) + line)

    with open(filename + "_lined" + ".txt", "a+") as f:
        for line in new_text:
            f.write(line)
为了测试它,我在一批文本文件上运行它,然后出于好奇,再次运行它(在已经编号的文件中添加第二组行号)。我注意到,每次运行该程序时,新创建的文件的文件大小都比每行添加5-6个字符时的大小大得多。每次后续运行时,文件大小从150KB(原始)跳到7001800,然后再跳到3000KB


是什么导致文件大小增加如此之多?

正如在注释中指出的那样,每次运行代码时,您都会附加到行版本。相反,请尝试:

def创建版本(文件名):
将open(filename+“.txt”,“r”)作为f:
text=f.readlines()
new_text=[“[{0}]:”。格式(num)+枚举(text)中(num,line)的行]
将open(filename+“_-lined”+“.txt”、“w”)作为f:
f、 写入(“”.join([new_text]))

如前所述,在注释中,每次运行代码时都会附加到行版本。相反,请尝试:

def创建版本(文件名):
将open(filename+“.txt”,“r”)作为f:
text=f.readlines()
new_text=[“[{0}]:”。格式(num)+枚举(text)中(num,line)的行]
将open(filename+“_-lined”+“.txt”、“w”)作为f:
f、 写入(“”.join([new_text]))

在第9行,您打开带有“a+”标志的文件。这使文件可用于附加和读取。有关open命令不同模式的说明,请参见。通过以“w”模式打开文件,您将覆盖现有文件。

在第9行,您将使用“a+”标志打开文件。这使文件可用于附加和读取。有关open命令不同模式的说明,请参见。通过以“w”模式打开文件,您将覆盖现有文件。

我认为您不需要使用列表或附加到文件

你在找这样的东西

def create_lined_ver(filename):
    with open(filename + ".txt") as f_in, open(filename + " _lined.txt", "w") as f_out:
        for num, line in enumerate(f_in):
            f_out.write("[{}]: {}\n".format(num,  line))

我认为您不需要使用列表或附加到文件

你在找这样的东西

def create_lined_ver(filename):
    with open(filename + ".txt") as f_in, open(filename + " _lined.txt", "w") as f_out:
        for num, line in enumerate(f_in):
            f_out.write("[{}]: {}\n".format(num,  line))

看起来您已经在append模式下打开了文件,您是否查看了文件的内容…?“在程序运行之前没有现有的目标文件”--在第二次和所有后续运行中都有@DavidConrad等等,你完全正确。但是
file.txt
也是从
file.txt
附加的!看起来您已经在append模式下打开了文件,您是否查看了文件的内容…?“在程序运行之前没有现有的目标文件”--在第二次和所有后续运行中都有@DavidConrad等等,你完全正确。但是
file.txt
也是从
file.txt
附加的!这真是太美了。我甚至不知道可以同时打开多个上下文管理器,或者直接枚举文件句柄对象。我相信你的意思是积极的Pythonic;)这真是太美了。我甚至不知道可以同时打开多个上下文管理器,或者直接枚举文件句柄对象。我相信你的意思是积极的Pythonic;)