Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

remova a linha vazia impressa da saída da consulta do hive usando python


Normalmente, você abriria o arquivo de entrada e escreveria as linhas não vazias em um segundo arquivo:
with open('file.tsv') as infile, open('filtered_file.tsv', 'w') as outfile:
    for line in infile:
        if line.strip():
            outfile.write(line)

Se você quiser filtrar o arquivo no local, você pode usar FileInput com o inplace opção:
import fileinput
for line in fileinput.FileInput("infile", inplace=1):
    if line.strip():
        print line

no entanto, isso usa um arquivo intermediário e pode não funcionar em situações de pouco espaço em disco.

Para filtrar o arquivo no local sem alocar espaço em disco adicional, você pode tentar algo assim:
with open('file.tsv', 'r+') as infile:
    read_pos = write_pos = 0
    line = infile.readline()
    while line:
        read_pos += len(line)
        if line.strip():
            infile.seek(write_pos)
            infile.write(line)
            write_pos += len(line)
        infile.seek(read_pos)
        line = infile.readline()
    # update file size to the new, possibly reduced, size
    infile.truncate(write_pos)