0

我正在按如下方式运行python脚本,第二个参数是逗号(“,”)分隔输入..我试图根据“,”拆分这个参数,并继续将每个字符串的每个filter_log的输出附加到output.txt 1.)这样做时出现以下错误吗?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. import不像C那样工作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 回答