Ответ 1
import fileinput
for line in fileinput.FileInput("file",inplace=1):
if line.rstrip():
print line
Например, у нас есть такой файл:
первая строка
вторая линия
третья строка
И в результате нам нужно получить:
первая строка
вторая строка
третья строка
Используйте ТОЛЬКО python
import fileinput
for line in fileinput.FileInput("file",inplace=1):
if line.rstrip():
print line
Оператор with
отлично подходит для автоматического открытия и закрытия файлов.
with open('myfile','rw') as file:
for line in file:
if not line.isspace():
file.write(line)
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())
Я знаю, что вы спросили о 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()
Существует много способов сделать это, только один:)
>>> 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
>>>
Вы пробовали что-то вроде программы ниже?
for line in open(filename):
if len(line) > 1 or line != '\n':
print(line, end='')
Вы можете использовать ниже, чтобы удалить все пустые строки:
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)
import os os.system("sed -i /^$/d file.txt")