相关疑难解决方法(0)

Python如何一次读取N行

我正在编写一个代码,一次取一个巨大的文本文件(几GB)N行,处理该批处理,并移动到下一行N行,直到我完成整个文件.(我不在乎最后一批是不是完美的尺寸).

我一直在阅读有关使用itertools islice进行此操作的信息.我想我在那里:

from itertools import islice
N = 16
infile = open("my_very_large_text_file", "r")
lines_gen = islice(infile, N)

for lines in lines_gen:
     ...process my lines...
Run Code Online (Sandbox Code Playgroud)

麻烦的是我想处理下一批16行,但我遗漏了一些东西

python lines python-itertools

44
推荐指数
2
解决办法
4万
查看次数

Python CSV到SQLite

我正在"转换"一个大的(~1.6GB)CSV文件,并将CSV的特定字段插入到SQLite数据库中.基本上我的代码看起来像:

import csv, sqlite3

conn = sqlite3.connect( "path/to/file.db" )
conn.text_factory = str  #bugger 8-bit bytestrings
cur = conn.cur()
cur.execute('CREATE TABLE IF NOT EXISTS mytable (field2 VARCHAR, field4 VARCHAR)')

reader = csv.reader(open(filecsv.txt, "rb"))
for field1, field2, field3, field4, field5 in reader:
  cur.execute('INSERT OR IGNORE INTO mytable (field2, field4) VALUES (?,?)', (field2, field4))
Run Code Online (Sandbox Code Playgroud)

一切都按照我的预期进行,但例外情况是......它需要花费大量的时间来处理.我编码不正确吗?有没有更好的方法来实现更高的性能并完成我需要的(只需将CSV的几个字段转换为SQLite表)?

**编辑 - 我尝试按照建议直接将csv导入sqlite但事实证明我的文件在字段中有逗号(例如"My title, comma").这导致导入错误.看来手动编辑文件的次数太多了......

还有其他的想法??**

python csv sqlite

20
推荐指数
3
解决办法
3万
查看次数

标签 统计

python ×2

csv ×1

lines ×1

python-itertools ×1

sqlite ×1