私はそのファイル(#)内のコメント行を削除する必要があるコメントファイルのリストを持っていて、同じファイルに書き込む必要があります。Python:コメント行を削除して同じファイルに書き込む方法は?
コメントファイル:
#Hi this the comment
define host {
use template
host_name google_linux
address 192.168.0.12
}
#commented config
#ddefine host {
#d use template1
#d host_name fb_linux
#d address 192.168.0.13
#d}
私は、ファイル内のコメント行を削除するために書いたコード?
コード:
>>> with open('commentfile.txt','r+') as file:
... for line in file:
... if not line.strip().startswith('#'):
... print line,
... file.write(line)
...
define host {
use template
host_name google_linux
address 192.168.0.12
}
>>> with open('commentfile.txt','r+') as file:
... for line in file:
... if line.strip().startswith('#'):
... continue
... print line,
... file.write(line)
...
define host {
use template
host_name google_linux
address 192.168.0.12
}
Iは、印刷出力に戻り正しいが、再び同じファイルに書き込むことができなかったことが上記二つの方法を使用してみました。ファイル内
出力:
cat commentfile.txt
#Hi this the comment
define host {
use template
host_name google_linux
address 192.168.0.12
}
#commented config
#ddefine host {
#d use template1
#d host_name fb_linux
#d address 192.168.0.13
#d}
予想される出力:
cat commentfile.txt
define host {
use template
host_name google_linux
address 192.168.0.12
}
私も正規表現の方法を試してみたが、同じファイルに書き込むように動作しませんでした。
RE方法:
for line in file:
m = re.match(r'^([^#]*)#(.*)$', line)
if m:
continue
任意のヒントが参考になりますか?
読んでいる間にファイルに書き込むのは難しいです。ファイル全体をメモリに読み込んで操作し、一度にファイルに戻してください。それほど大きくないので、消費されるメモリは問題になりません。 – deceze
小さなファイルの場合は、ファイル全体をメモリに読み込み、ファイルを閉じて処理して書き戻します。大きなファイルの場合は、ファイルを読み込み、別のファイルに書き込んだり処理したりしたら、一時ファイルの名前を元のファイルに変更します。 – Vatine
@decezeファイルをループしています。しかし、いくつかのファイルは2GBの設定データを持っています。それは大丈夫ですか?もし私があなたの方法に従えば。 –