python - 如何在python中读取一个大的tsv文件并将其转换为csv
问题描述
我有一个tsv
要转换为csv
文件的大文件(大约 12 GB)。对于较小tsv
的文件,我使用以下代码,它可以工作但速度很慢:
import pandas as pd
table = pd.read_table(path of tsv file, sep='\t')
table.to_csv(path andname_of csv_file, index=False)
但是,此代码不适用于我的大文件,并且内核在中间重置。
有没有办法解决这个问题?有谁知道这个任务是否可以用 Dask 而不是 Pandas 来完成?
我正在使用 Windows 10。
解决方案
您可以逐行读取并逐行处理它们,而不是一次将所有行加载到内存中:
和Python 3.x:
fs=","
table = str.maketrans('\t', fs)
fName = 'hrdata.tsv'
f = open(fName,'r')
try:
line = f.readline()
while line:
print(line.translate(table), end = "")
line = f.readline()
except IOError:
print("Could not read file: " + fName)
finally:
f.close()
输入(hrdata.tsv):
Name Hire Date Salary Sick Days remaining
Graham Chapman 03/15/14 50000.00 10
John Cleese 06/01/15 65000.00 8
Eric Idle 05/12/14 45000.00 10
Terry Jones 11/01/13 70000.00 3
Terry Gilliam 08/12/14 48000.00 7
Michael Palin 05/23/13 66000.00 8
输出:
Name,Hire Date,Salary,Sick Days remaining
Graham Chapman,03/15/14,50000.00,10
John Cleese,06/01/15,65000.00,8
Eric Idle,05/12/14,45000.00,10
Terry Jones,11/01/13,70000.00,3
Terry Gilliam,08/12/14,48000.00,7
Michael Palin,05/23/13,66000.00,8
命令:
python tsv_csv_convertor.py > new_csv_file.csv
笔记:
如果您使用Unix
环境,只需运行以下命令:
tr '\t' ',' <input.tsv >output.csv
推荐阅读
- html - 隐藏图像后面的输入字段文件
- javascript - 是否有一段 javascript 代码可以全部大写?
- amazon-web-services - 需要对 s3 中的文件进行验证并将其复制到两个不同的表中
- html - Safari:即使隐藏元素,阴影过滤器仍然可见
- javascript - 将数据从按钮传递到模态 boostrap
- printing - 为什么我的组合函数在删除小数点后不能正确打印大数?(在 Lua 中)
- active-directory - 从 VB.Net 中的 ActiveDirectory 中检索 SAMAccountName
- javascript - 停止 dom 中的 href 事件并继续 DOM 事件?
- java - 什么时候迭代器应该在源修改后抛出异常?
- mysql-workbench - 在 MySQL Workbench 中扩展代码片段