sql >> Database >  >> RDS >> Mysql

verwijder lege regel afgedrukt uit hive-query-uitvoer met behulp van python

Gewoonlijk zou je het invoerbestand openen en de niet-lege regels naar een tweede bestand schrijven:

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

Als u het bestand inplace wilt filteren, kunt u FileInput . gebruiken met de inplace optie:

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

dit gebruikt echter een tussenbestand en werkt mogelijk niet in situaties met weinig schijfruimte.

Om het bestand te filteren zonder extra schijfruimte toe te wijzen, kunt u zoiets als dit proberen:

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. Mysql-wachtwoord wijzigen in Docker-container

  2. Hoe maak je een XML-bestand van MySQL-gegevensquery's?

  3. Een wachtrij wissen in Oracle AQ

  4. Hoe MAKE_SET() werkt in MariaDB