gpt4 book ai didi

python:在 csvreader 迭代器中只检查几行的有效方法?

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:00 25 4
gpt4 key购买 nike

我有一个(非常大的)CSV 文件,看起来像这样:

header1,header2,header3
name0,rank0,serial0
name1,rank1,serial1
name2,rank2,serial2

我已经编写了一些代码来处理该文件,并将其写出(使用 csvwriter)修改为这样,并将我计算的一些信息附加到每一行的末尾:

header1,header2,header3,new_hdr4,new_hdr5
name0,rank0,serial0,salary0,base0
name1,rank1,serial1,salary1,base1
name2,rank2,serial2,salary2,base2

我试图做的是构造脚本,以便它自动检测正在读取的 CSV 文件是否已经处理。如果它已经被处理了,我以后可以跳过很多昂贵的计算。我试图了解在读者循环中是否有这样做的合理方法。我可以只打开文件一次,读入足够的内容来进行检测,然后关闭并设置标志重新打开它,但这看起来很老套。

有没有办法在同一个阅读器中做到这一点?逻辑是这样的:

read first N lines   ###(N is small)
if (some condition)
already_processed = TRUE
read_all_csv_without_processing
else
read_all_csv_WITH_processing

我不能只使用读者给我的迭代器,因为当我有足够的行来进行条件检查时,我没有任何好的方法可以返回到 CSV 的开头。关闭并重新打开它真的是最优雅的方式吗?

最佳答案

如果您使用通常的 python 方法读取文件(with open("file.csv","r") as f: 或等价物),您可以“重置”通过调用 f.seek(0) 读取文件。

这是一段代码,(我猜)应该看起来更像您读取文件的方式。它表明使用 csvfile.seek(0) 重置 csvfile 也会重置 csvreader:

with open('so.txt', 'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
for row in csvreader:
print('Checking if processed')
print(', '.join(row))
#if condition:
if True:
print('File already processed')
already_processed = True
print('Reseting the file')
csvfile.seek(0)
for row in csvreader:
print(', '.join(row))
break

关于python:在 csvreader 迭代器中只检查几行的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39430351/

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