python – 从文件中读取行,处理它,然后将其删除

我有一个22mb的文本文件,其中包含一个数字列表(每行1个数字).我试图让python读取数字,处理数字并将结果写入另一个文件.所有这一切都有效但如果我必须停止程序,它从头开始.我一开始尝试使用mysql数据库但速度太慢了.我通过这种方式处理的数量大约是4倍.我希望能够在处理号码后删除该行.

with open('list.txt', 'r') as file:
for line in file:
    filename = line.rstrip('\n') + ".txt"
    if os.path.isfile(filename):
        print "File", filename, "exists, skipping!"
    else:
        #process number and write file
    #(need code to delete current line here)

正如您每次重新启动时所看到的那样,它必须在硬盘驱动器中搜索文件名,以确保它到达它停止的位置.有150万个数字,这可能需要一段时间.我找到了一个截断的例子,但它没有用.

是否有任何类似于array_shift(PHP)的命令用于python,它将与文本文件一起使用.

解决方法:

我会使用一个标记文件来保持最后一行的编号,而不是重写输入文件:

start_from = 0

try:
    with open('last_line.txt', 'r') as llf: start_from = int(llf.read())
except:
    pass

with open('list.txt', 'r') as file:
    for i, line in enumerate(file):
        if i < start_from: continue

        filename = line.rstrip('\n') + ".txt"
        if os.path.isfile(filename):
            print "File", filename, "exists, skipping!"
        else:
            pass
        with open('last_line.txt', 'w') as outfile: outfile.write(str(i))

此代码首先检查文件last_line.txt并尝试从中读取数字.该数字是在上一次尝试期间处理的行数.然后它只是跳过所需的行数.

上一篇:使用python在命令行上完成as-you-type


下一篇:iPython不读取〜/ .inputrc