Mysql
 sql >> Base de données >  >> RDS >> Mysql

supprimer la ligne vide imprimée à partir de la sortie de la requête de la ruche à l'aide de python

Habituellement, vous ouvrez le fichier d'entrée et écrivez les lignes non vides dans un second fichier :

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

Si vous souhaitez filtrer le fichier en place, vous pouvez utiliser FileInput avec le inplace choix :

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

cependant, cela utilise un fichier intermédiaire et peut ne pas fonctionner dans des situations d'espace disque insuffisant.

Pour filtrer le fichier sur place sans allouer d'espace disque supplémentaire, vous pouvez essayer quelque chose comme ceci :

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)