我发现SQLite非常适合这种情况。它易于设置,可以将数据存储在本地,但是相比于csv文件,您可以更轻松地控制所选内容,并且还可以添加索引等功能。
还有一种内置的方法可以将csv文件加载到表中:
http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles。
如果您需要SQLite路线的更多详细信息,例如如何创建表格、加载数据或从Python查询数据,请告诉我。
将.csv文件加载到表中的SQLite说明:
要创建一个数据库文件,您只需在打开SQLite时将所需的文件名作为参数添加即可。从命令行导航到包含csv文件的目录(在此假设您希望SQLite .db文件包含在同一目录中)。如果使用Windows,则如果尚未完成,请将SQLite添加到PATH环境变量中(如果需要说明,请单击
此处),然后使用以下方式打开SQLite并指定您要为数据库文件命名的名称的参数:
sqlite3 example.db
检查数据库文件是否已创建,请输入以下内容:
.databases
创建一个表来存储数据。我这里以一个简单的客户表作为例子。如果某些列的数据类型不一致,请使用text类型:
create table customers (ID integer, Title text, Forename text, Surname text, Postcode text, Addr_Line1 text, Addr_Line2 text, Town text, County text, Home_Phone text, Mobile text, Comments text);
指定要使用的分隔符:
.separator ","
发出导入数据的命令,语法采用以下形式:.import filename.ext table_name
例如:
.import cust.csv customers
检查数据是否加载完成:
select count(*) from customers;
为那些你可能会进行过滤的列添加索引(完整语法描述在这里),例如:
create index cust_surname on customers(surname);
现在,在任何已索引的列上进行过滤时,您应该可以快速访问数据。要离开SQLite,请使用.exit
,要获取其他有用的非SQL命令列表,请使用.help
。
Python替代方案
或者,如果您想坚持使用纯Python并预处理文件,则可以将数据加载到字典中,这将允许更快地访问数据,因为字典键的行为类似于索引,这意味着您可以快速获取与键相关联的值,而无需逐个记录查找。我需要进一步了解您的输入数据和基于哪些字段进行查找才能提供有关如何实现此操作的更多详细信息。
但是,除非您事先知道何时需要数据(以便能够在请求数据之前预处理文件),否则每次运行此操作时仍会将文件从磁盘加载到内存中,这样会有负担。根据您的确切用法,这可能使数据库解决方案更合适。