从另一个脚本调用python脚本并将变量传递给它

问题描述:

我有一个python脚本,它包含一个大型函数,用于过滤列表并将内容导出到excel。我希望能够制作不同的python脚本,我可以为不同的情况指定不同的过滤器,并使用应用过滤器的函数将它们传递给我的python脚本。从另一个脚本调用python脚本并将变量传递给它

例如

#Script called function_script with function to apply filters 
def my_funct(filter1, filter2, filter3, etc): 
    apply filters to list 
    export results to excel 

我都会有不同的过滤器对一些常见的用例和,而不是改变我的过滤器,我宁愿创建调用脚本包含我的功能,并传递每个用例python脚本过滤器。就像是。

#One script where filters for category 1 are defined 
filter1 = 'Foo' 
filter2 = 'Bar' 
filter3 = 'Test' 
function_script(filter1, filter2, filter3) 
+1

用函数导入脚本? –

+0

你的意思是我可以简单地执行'import function_script'然后使用它?他们需要在同一个工作目录吗?将变量传递给它只是简单的'function_script(filter1,filter2,filter3)? – Jstuff

+0

假设'function_script'在'function_file.py'中,如果这两个文件位于同一个目录中,它将从'from function_file import function_script'中输入 – dashiell

的execfile(文件名[,全局[,当地人])

+0

哎呀,这不是必然的 –

假设大功能该文件是在一个目录中的所有其他:

some folder 
|-functions_file.py 
|-main.py 

所以你的函数文件将包含您的功能,例如:

def add(num1, num2): 
    return num1+num2 

def subtract(num1, num2): 
    return num1-num2 

#here is example function to show you how to pass more values to function 
def add_all(numbers): 
    #if you need individual values 
    for number in numbers: 
     print number 
    return sum(number) 

并从您的main.py你可以这样做:

import functions_file 

print(functions_file.add(1,20)) #prints 21 if you're on py2 you don't need() for print 

print(functions_file.add_all([1,2,3,4,5,6])) 
#you pass parameters in list -> 21 is output 
+0

如果我不知道每次有多少参数传递给函数,有没有办法将它推广? – Jstuff

+0

那么你的功能应该处理,你的问题没有要求..但我会将它包含在答案中 –