我需要裁剪一个包含10000多行数字的大文本文件,以及一个具有以下格式的标题(number\u of \u lines,number\u difference,“Sam”)
数字之差是第一个数字和最后一个数字之间的差。你知道吗
例如,如果文件如下所示:
10
12
13.5
17
20
那么,标题应该是: 5.10萨姆
问题是标记不适用于多次不写入头文件,并且大文件的头文件会传递到第一个小文件。你知道吗
每个文件的标题永远不会相同。你知道吗
如何为每个文件添加一个不断变化的头文件?你知道吗
def TextCropper():
lines_per_file = 1000
smallfile = None
with open(inputFileName) as bigfile:
for lineno, line in enumerate(bigfile):
if lineno % lines_per_file == 0:
if smallfile:
smallfile.close()
small_filename = 'small_file_{}.txt'.format(lineno + lines_per_file)
smallfile = open(small_filename, "w")
if (flags[counter] == False):
smallfile.write(lines_per_file)
flags[counter] = True
smallfile.write(line)
elif smallfile:
smallfile.close()
文本裁剪器()
你一次读一行写一行,效率很低。这样做,你也不知道最后一行是什么,所以你不能提前写你的头。你知道吗
只要读N行,如果有的话。
islice()
会帮你做到的。如果列表返回为空,则没有要读取的行,否则可以继续将当前块写入文件。你知道吗因为每一行都被读取为一个带有尾随换行符('\n')的数字,所以去掉它,将第一个和最后一个数字转换为浮点数并计算差值。通过连接列表中的元素,将实际数字写入文件非常简单。你知道吗
要使函数可重用,请将可能更改的变量作为参数包含在内。这样,您就可以命名任何大文件、任何输出小文件和任意数量的行,而无需更改硬编码值。你知道吗
相关问题 更多 >
编程相关推荐