このリストを印刷するときにコメントを削除しようとしています。
私は使っている
output = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for item in output:
print item
これはファイル全体を提供するのに最適ですが、印刷時にコメントを削除するにはどうすればよいですか?
ファイルの場所が原因で、ファイルを取得するために cat を使用する必要があります。
正規表現re
モジュールを使用してコメントを識別し、スクリプトでそれらを削除または無視できます。
この関数self.cluster.execCmdVerify
は明らかに を返すiterable
ので、次のように簡単に実行できます。
import re
def remove_comments(line):
"""Return empty string if line begins with #."""
return re.sub(re.compile("#.*?\n" ) ,"" ,line)
return line
data = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for line in data:
print remove_comments(line)
次の例は、文字列出力の場合です。
柔軟にするために、文字列からファイルのようなオブジェクトを作成できます(文字列である限り)
from cStringIO import StringIO
import re
def remove_comments(line):
"""Return empty string if line begins with #."""
return re.sub(re.compile("#.*?\n" ) ,"" ,line)
return line
data = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
data_file = StringIO(data)
while True:
line = data_file.read()
print remove_comments(line)
if len(line) == 0:
break
またはremove_comments()
、あなたのfor-loop
.
出力をgrepするのはどうですか
grep -v '#' /opt/tpd/node_test/unit_test_list
たとえば、python ファイルの場合で、 # で始まる行を削除したい場合は、次を試してください。
cat yourfile | grep -v '#'
編集:
猫が必要ない場合は、直接行うことができます:
grep -v "#" yourfile