我必须访问CSV文件中的第N行。
这是我所做的:
import csv
the_file = open('path', 'r')
reader = csv.reader(the_file)
N = input('What line do you need? > ')
i = 0
for row in reader:
if i == N:
print("This is the line.")
print(row)
break
i += 1
the_file.close()
…但是这并不理想。编辑精度:如果文件很大,我不想遍历所有行,也不需要将整个文件加载到内存中。
我确实希望类似的东西reader[N]
存在,但我没有找到它。
编辑答案:此行(来自所选答案)是我想要的:
next(itertools.islice(csv.reader(f), N, None)
它没有什么区别,但是使用起来enumerate
要比使用自己的计数器变量稍微清洁一些。
for i, row in enumerate(reader):
if i == N:
print("This is the line.")
print(row)
break
您也可以使用itertools.islice
针对这种情况设计的方案-访问特定的可迭代切片,而无需将整个内容读入内存。它应该比遍历不需要的行更有效率。
with open(path, 'r') as f:
N = int(input('What line do you need? > '))
print("This is the line.")
print(next(itertools.islice(csv.reader(f), N, None)))
但是,如果您的CSV文件很小,只需将整个内容读入一个列表即可,然后您可以按照常规方式使用索引来访问该列表。这还有一个优点,您可以以随机顺序访问多个不同的行,而不必重置csv阅读器。
my_csv_data = list(reader)
print(my_csv_data[N])
问题内容: 我有一个不完整的csv文件,需要准确更新,因此有这样的csv文件: 自然地,文件要复杂得多,但是以这种格式,这是我要在7到8(或任何范围)之间插入或n个单词的内容。我怎样才能做到这一点? 伪代码,代码或示例都很好,我不知道如何开始。 更新: 也许我应该将其转换为数组或某种数据结构。然后,在特定位置插入新项目,将其余内容右移,并在每次插入时执行该操作。 我不知道是否正确的方法或如何开始对
问题内容: 我在文件中有一个ASCII表,我想从中读取一组特定的行(例如,4003至4005行)。问题是该文件可能非常长(例如,十万到几百万行),我想尽快这样做。 错误的解决方案 :读取整个文件,然后转到这些行, 更好的解决方案 :遍历每行,以便不将其全部存储在内存中http://codingdict.com/questions/775 最佳解决方案? 但这仍然需要遍历每一行。是否有更好的(从速度
问题内容: 解决此问题的最佳方法是: 打开文件进行读取,但前提是尚未打开文件进行写入 打开文件进行写入,但前提是尚未打开文件进行读取或写入 内置函数的工作方式如下 scr.txt现在包含“ 111”。 scr.txt已被覆盖,现在包含“ 222”(在Windows上为Python 2.4)。 该解决方案应在同一进程内工作(如上例所示),以及在另一个进程打开文件时。 如果崩溃的程序无法使锁保持打开状
本文向大家介绍Python实现读取文件最后n行的方法,包括了Python实现读取文件最后n行的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下: 以上处理和日志文件格式为 读取最后一行: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总
主要内容:直接访问,索引访问文件访问方法 看看访问存储在辅助存储器中的文件的各种方法。 顺序访问 大多数操作系统按顺序访问文件。 换句话说,可以说大多数文件需要由操作系统按顺序访问。 在顺序访问中,操作系统逐字读取文件。 维护一个指针,该指针最初指向文件的基地址。 如果用户想要读取文件的第一个字,那么指针将该字提供给用户并将其值增加1个字。 这个过程一直持续到文件结束。 现代文字系统确实提供了直接访问和索引访问的概念,但最常
我使用papa parse读取远程托管的csv文件。问题是头行不在文件的第一行,而是文件以几行空行开始,然后是头行,然后是所有数据。我正在努力让papa parse忽略文件开头的空行。有什么我遗漏的吗?我希望避免加载整个文件(只需要6000多行中的前几行)。
问题内容: 首先,我是Python的新手,确实搜索了答案,但是没有运气。到目前为止,我发现的内容只返回一行,就像下面的代码一样。我尝试了其他解决方案,例如,但总是只能返回一行。 我有一个名为包含数据行的文件: 我有以下代码: 在这种情况下,它仅打印 “这是第四行”。 我知道为什么,但是如何从这里拿走并打印第4、7、10、13行…? 问题答案: 的返回值是一个迭代器(因此是可迭代的),因此您可以将其
问题内容: 我希望对多维numpy数组的某些部分易于阅读。对于任何数组,访问第一维都是容易的()。另一方面,访问第六维是“困难的”(尤其是阅读)。 有一个更好的方法吗?特别是有没有一种方法,在编写程序时不知道轴? 编辑:索引维不一定是最后一个维 问题答案: 如果您想要一个视图并且想要快速查看,您可以手动创建索引: 它比使用s索引快得多,并且仅慢一点: 但是可能不那么可读,因此,如果经常需要,您可能