如何对大文件每一行执行去除空格操作

背景:比如有一个1G的文本文件需要导入数据库,每行一条数据,但是每行数据可能前后存在空格,所以需要对每一行执行空格去除操作,需要防止内存溢出问题,希望能做到读取一行又写回同一行,这样就不用生成一个新文件。

现在想到的做法就是逐行读取,然后过滤空格后写到一个新文件。

最佳答案

sed命令啊

2年前 评论
mingge1124 (楼主) 2年前
讨论数量: 4

sed命令啊

2年前 评论
mingge1124 (楼主) 2年前

用php的yield,一个生成器函数,这样做可以避免一次性读取整个大文件内容,而是只读取一行,处理一行。这对于处理非常大的文件来说非常有用,因为它可以大大减少内存占用和处理时间。

function trimFile($filename) {
    $file = fopen($filename, 'r');
    if (!$file) {
        throw new Exception("Unable to open file: $filename");
    }

    while (($line = fgets($file)) !== false) {
        yield trim($line);
    }

    fclose($file);
}

foreach (trimFile('largefile.txt') as $line) {
    echo $line . "\n";
}
1年前 评论
mingge1124 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!