我正在运行python脚本,如下所示,第二个arugment是一个逗号(“,”)分隔输入..am试图根据“,”拆分这个arugment并继续追加 每个字符串的每个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])
答案 0 :(得分:8)
您遇到语法错误(编辑:不是语法错误,只是一个错误)。你的意思是:
string = sys.argv[2].split(",")
答案 1 :(得分:4)
import
不的工作方式与C include
相同。它创建了一个模块对象,其中包含可用于引用属性的模块名称,即使用string.split(sys.argv[2], ',')
而不是split(sys.argv[2], ',')
string
模块中的所有函数都已弃用。字符串有方法,使用它们! sys.argv[2].split(',')
string = split(",",sys.argv[2])
您是否意识到执行此分配后, 不再能够引用string
模块了? 从不使用内置函数/类型/模块的名称作为变量名称!