たとえば、次のようなファイルがあります。
first line
second line
third line
その結果、次のことを取得する必要があります。
first line
second line
third line
Pythonのみを使用してください
たとえば、次のようなファイルがあります。
first line
second line
third line
その結果、次のことを取得する必要があります。
first line
second line
third line
Pythonのみを使用してください
このwith
ステートメントは、ファイルを自動的に開いたり閉じたりするのに優れています。
with open('myfile','rw') as file:
for line in file:
if not line.isspace():
file.write(line)
import fileinput
for line in fileinput.FileInput("file",inplace=1):
if line.rstrip():
print 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 を 1 行使用するだけで簡単に実行できます。スクリプトは必要ありません。perl -ne 'print if /\S/' foo.txt
(私は Python が大好きで、99% の確率で Perl よりも Python を好みますが、Perl に -e スイッチを使用して実行できるように、Python でコマンドライン スクリプトを実行できることを本当に望んでいます!)
とはいえ、次の Python スクリプトは機能するはずです。これを頻繁に行う場合や大きなファイルの場合は、正規表現もコンパイルして最適化する必要があります。
#!/usr/bin/python
import re
file = open('foo.txt', 'r')
for line in file.readlines():
if re.search('\S', line): print line,
file.close()
これを行う方法はたくさんありますが、これは 1 つにすぎません :)
>>> 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)