让我们说我打开一个大的(几GB)文件,我无法在整个文件中读取一次。
如果它是csv文件,我们会使用:
for chunk in pd.read_csv('path/filename', chunksize=10**7):
# save chunk to disk
或者我们可以用熊猫做类似的事情:
import pandas as pd
with open(fn) as file:
for line in file:
# save line to disk, e.g. df=pd.concat([df, line_data]), then save the df
一个" chunk" awk脚本的数据? Awk会将文本解析/处理成您想要的格式,但我不知道如何" chunk"用awk。可以编写脚本script1.awk
然后处理您的数据,但这会立即处理整个文件。
相关问题,更具体的例子:How to preprocess and load a "big data" tsv file into a python dataframe?
答案 0 :(得分:1)
awk一次按设计读取单个记录(块)。默认情况下,记录是数据行,但您可以使用RS
(记录分隔符)变量指定记录。在读取下一个代码块之前,有条件地在当前记录上执行每个代码块:
$ awk '/pattern/{print "MATCHED", $0 > "output"}' file
以上脚本将一次从输入文件中读取一行,如果该行与pattern
匹配,则会在读取下一行之前将该行保存在MATCHED
前面的文件输出中。