Как удалить все пустые строки в файле с помощью python?

Например, у нас есть такой файл:

первая строка
вторая линия

третья строка

И в результате нам нужно получить:

первая строка
вторая строка
третья строка

Используйте ТОЛЬКО python

Ответы

Ответ 1

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

Ответ 2

Оператор with отлично подходит для автоматического открытия и закрытия файлов.

with open('myfile','rw') as file:
    for line in file:
        if not line.isspace():
            file.write(line)

Ответ 3

import sys
with open("file.txt") as f:
    for line in f:
        if not line.isspace():
            sys.stdout.write(line)

Другой способ -

with open("file.txt") as f:
    print "".join(line for line in f if not line.isspace())

Ответ 4

Я знаю, что вы спросили о Python, но ваш комментарий о Win и Linux указывает, что вы после кросс-платформенности, и Perl, по крайней мере, является кросс-платформенным как Python. Вы можете сделать это легко с помощью одной строки Perl в командной строке, не требуя никаких скриптов: perl -ne 'print if /\S/' foo.txt

(Я люблю Python и предпочитаю Perl в 99% случаев, но иногда мне действительно жаль, что я не могу с ним работать с командной строкой с помощью ключа -e на Perl!)

Тем не менее, должен работать следующий Python script. Если вы планируете делать это часто или для больших файлов, его также следует оптимизировать с помощью компиляции регулярных выражений.

#!/usr/bin/python
import re
file = open('foo.txt', 'r')
for line in file.readlines():
    if re.search('\S', line): print line,
file.close()

Существует много способов сделать это, только один:)

Ответ 5

>>> s = """first line
... second line
... 
... third line
... """
>>> print '\n'.join([i for i in s.split('\n') if len(i) > 0])
first line
second line
third line
>>> 

Ответ 6

Вы пробовали что-то вроде программы ниже?

for line in open(filename):
    if len(line) > 1 or line != '\n':
        print(line, end='')

Ответ 7

Вы можете использовать ниже, чтобы удалить все пустые строки:

with open("new_file","r") as f:
 for i in f.readlines():
       if not i.strip():
           continue
       if i:
           print i,

Мы также можем записать вывод в файл следующим образом:

with open("new_file","r") as f, open("outfile.txt","w") as outfile:
 for i in f.readlines():
       if not i.strip():
           continue
       if i:
           outfile.write(i)            

Ответ 8

import os
os.system("sed -i /^$/d file.txt")