gpt4 book ai didi

python - 开始从给定行开始迭代 csv 文件?

转载 作者:行者123 更新时间:2023-11-30 23:18:19 24 4
gpt4 key购买 nike

我正在迭代一个大型 csv 文件并根据该大型 csv 文件的 userId 收集数据。我们将此文件命名为 file_A 。在此过程中,我的机器崩溃了。但现在我想再次启动该过程,但只想继续我收集的最后一条记录:

我编写了一个简单的方法来获取结果文件的最后一行:

def get_last_row(csv_file):
with open(csv_file, 'rb') as f:
reader = csv.reader(f)
lastLine = reader.next()
for line in reader:
lastLine = line
return lastLine

现在我想通过评估结果文件来迭代 file_A 超出行返回。我怎样才能做到这一点?

for row in input_file:
if row != lastLine[user_id]
make a database call

这是错误的,因为它会考虑除最后一行之外的所有行。

让我们假设这个例子

1,a
2,b
3,c
4,d

让我们假设 lastLine['user_id']3 ,我想继续处理从4开始的记录

最佳答案

您有两种方法可以做到这一点。首先是使用条件变量并在每个操作上测试它 => 生成一个干净且易于维护的代码,几乎没有重复:

假设您当前的代码如下所示:

with open(csv_file, 'rb') as f:
reader = csv.reader(f)
# optional initialization ...
for line in reader:
# process line

你只需这样做:

skip = True
with open(csv_file, 'rb') as f:
reader = csv.reader(f)
# optional initialization ...
for line in reader:
if skip:
line[user_id] = last_line_user_id
skip = False
else:
# process line

或者,您可以选择分离第一个循环,以从实际行处理中跳过已处理的行:

with open(csv_file, 'rb') as f:
reader = csv.reader(f)
# optional initialization ...
for line in reader:
if line[user_id] == last_line_user_id:
break
for line in reader:
# process line

您重复了循环代码,但在处理部分没有进行测试

关于python - 开始从给定行开始迭代 csv 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810166/

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