gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:01 28 4
gpt4 key购买 nike

我有一个 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) for 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 - 从文件中读取行,处理它,然后删除它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12678146/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com