sql >> Databasteknik >  >> RDS >> Mysql

ta bort tom rad som skrivs ut från hive-frågeutdata med python

Vanligtvis skulle du öppna inmatningsfilen och skriva de icke-tomma raderna till en andra fil:

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

Om du vill filtrera filen på plats kan du använda FileInput med inplace alternativ:

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

detta använder dock en mellanfil och kanske inte fungerar i situationer med lite diskutrymme.

För att filtrera filen på plats utan att tilldela ytterligare diskutrymme kan du prova något i stil med detta:

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)



  1. Hur hittar man de privilegier och roller som ges till en användare i Oracle?

  2. manipulera DataGridView

  3. Hur man ställer in ett värde till NULL när du använder Zend_Db

  4. Hur ställer jag in standardschemat för en användare i MySQL