sql >> Base de Datos >  >> RDS >> Mysql

elimine la línea vacía impresa de la salida de consulta de Hive usando python

Por lo general, abriría el archivo de entrada y escribiría las líneas no vacías en un segundo archivo:

with open('file.tsv') as infile, open('filtered_file.tsv', 'w') as outfile:
    for line in infile:
        if line.strip():
            outfile.write(line)

Si desea filtrar el archivo en su lugar, puede usar FileInput con el inplace opción:

import fileinput
for line in fileinput.FileInput("infile", inplace=1):
    if line.strip():
        print line

sin embargo, esto usa un archivo intermedio y es posible que no funcione en situaciones de poco espacio en disco.

Para filtrar el archivo en su lugar sin asignar espacio adicional en el disco, puede intentar algo como esto:

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)