2

このリストを印刷するときにコメントを削除しようとしています。

私は使っている

output = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for item in output:
    print item

これはファイル全体を提供するのに最適ですが、印刷時にコメントを削除するにはどうすればよいですか?

ファイルの場所が原因で、ファイルを取得するために cat を使用する必要があります。

4

4 に答える 4

2

正規表現reモジュールを使用してコメントを識別し、スクリプトでそれらを削除または無視できます。

于 2013-07-15T09:01:47.897 に答える
2

この関数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.

于 2013-07-15T09:05:46.250 に答える
0

出力をgrepするのはどうですか

grep -v '#' /opt/tpd/node_test/unit_test_list
于 2013-07-15T09:02:36.720 に答える
0

たとえば、python ファイルの場合で、 # で始まる行を削除したい場合は、次を試してください。

cat yourfile | grep -v '#'

編集:

猫が必要ない場合は、直接行うことができます:

grep -v "#" yourfile
于 2013-07-15T09:02:59.350 に答える