Mysql
 sql >> Database >  >> RDS >> Mysql

rimuovi la riga vuota stampata dall'output della query hive usando python

Di solito apri il file di input e scrivi le righe non vuote in un secondo file:

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

Se vuoi filtrare il file sul posto puoi usare FileInput con il inplace opzione:

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

tuttavia, utilizza un file intermedio e potrebbe non funzionare in situazioni di spazio su disco insufficiente.

Per filtrare il file sul posto senza allocare spazio su disco aggiuntivo, puoi provare qualcosa del genere:

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)