0

次のように python スクリプトを実行しています。 1.)そうしている間に以下のエラーが発生していますか? 2.) 2 番目の引数で渡された各検索文字列を output.txt に追加し続ける方法は?

エラー:-

string = split(",",sys.argv[2])
NameError: name 'split' is not defined

利用方法:-

python test.py input.log loc\modem,loc\data

コード:-

import sys
import string

def filter_log(input_file, output_file, strs):
    with open(input_file, "r") as input, open(output_file, "w") as output:
        output.writelines(filter(lambda x: all([s in x for s in strs]), input.readlines()))

# here is just searched for "Warning", add other stuff
#filter_log("input.txt", "output.txt", ["Warning"])

print sys.argv[1]
print sys.argv[2]
for arg in sys.argv[2]:
    string = split(",",sys.argv[2])
    filter_log(sys.argv[1], "output.txt", ["Warning",string])
4

2 に答える 2

9

構文エラーがあります (編集:構文エラーではなく、単なる間違いです)。あなたが意味したのは:

string = sys.argv[2].split(",")

于 2013-09-25T22:25:04.540 に答える
4
  1. importC のようには機能しませinclude。属性を参照するために使用できるモジュールの名前を持つモジュール オブジェクトを作成しstring.split(sys.argv[2], ',')ます。split(sys.argv[2], ',')
  2. モジュール内のほとんどすべての関数stringは非推奨です。文字列にはメソッドがあり、それらを使用してください!sys.argv[2].split(',')
  3. string = split(",",sys.argv[2])この割り当てが実行された後、モジュールを参照できなくなることを認識していますか? 組み込み関数/型/モジュールの名前を変数の名前として使用しないでください!string
于 2013-09-25T22:27:20.667 に答える