在python中实现这个awk命令的最佳Pythonic方法是什么?你知道吗
awk 'BEGIN{chunk=0} /^From /{msgs++;if(msgs==500){msgs=0;chunk++}}{print > "chunk_" chunk ".txt"}' mbox
我现在用它来分割巨大的邮箱(mbox格式)文件。你知道吗
我正在尝试一种递归方法。你知道吗
def chunkUp(mbox, chunk=0):
with open(mbox, 'r') as bigfile:
msg = 0
for line in bigfile:
if msg == 0:
with open("./TestChunks/chunks/chunk_"+str(chunk)+".txt", "a+") as cf:
if line.startswith("From "): msg += 1
cf.write(line)
if msg > 20: chunkUp(mbox, chunk+1)
我希望能够在python中实现这一点,并且能够在中断时恢复进度。现在就开始工作。你知道吗
我要把我的脑袋打结了!干杯!你知道吗
递归方法注定会失败:一次打开的文件可能太多,因为
with
块直到程序结束才退出。你知道吗最好打开一个句柄并对其进行写入,在遇到“From”时关闭并重新打开新句柄。你知道吗
同时以写模式打开文件,而不是附加。下面的代码尝试执行最小的操作和测试,以将每一行写入文件,并在找到
From:
时关闭/打开另一个文件。最后,最后一个文件被关闭。你知道吗我还没测试过,但很简单,应该可以用。如果文件的第一行中没有“From”,则前面的所有行都存储在
chunk_0.txt
文件中。你知道吗相关问题 更多 >
编程相关推荐