我是来自 R 世界的 Python 新手,我正在处理以数据列结构化的大文本文件(这是 LiDaR 数据,因此通常有 6000 万+条记录)。
是否可以更改如此大文件的字段分隔符(例如,从制表符分隔到逗号分隔)而无需读取文件并for
在行上执行循环?
不。
只需几行 Python 就可以轻松做到这一点(未经测试,但一般方法有效):
# Python - it's so readable, the code basically just writes itself ;-)
#
with open('infile') as infile:
with open('outfile', 'w') as outfile:
for line in infile:
fields = line.split('\t')
outfile.write(','.join(fields))
我不熟悉 R,但如果它有一个库函数,它可能会做同样的事情。
请注意,此代码一次只从文件中读取一行,因此文件可能大于物理 RAM - 它永远不会完全加载。
您可以使用linux tr 命令将任何字符替换为任何其他字符。
实际上可以说是的,你可以在没有循环的情况下做到这一点,例如:
with open('in') as infile:
with open('out', 'w') as outfile:
map(lambda line: outfile.write(','.join(line.split('\n'))), infile)
你不能,但我强烈建议你检查发电机。
关键是您可以制作更快且结构良好的程序,而无需在内存中写入和存储数据以进行处理。
例如
file = open("bigfile","w")
j = (i.split("\t") for i in file)
s = (","join(i) for i in j)
#and now magic happens
for i in s:
some_other_file.write(i)
此代码花费内存来保存单行。