[英]How to run a python script inside a python script
I have a Python script script1
that have multiple arguments which could be simplified as:我有一个 Python 脚本
script1
有多个 arguments 可以简化为:
def add_vars(var1, var2, var3, var4, var5):
sum = var1+var2+var3+var4+var5
return sum
if __name__ == '__main__':
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter, description="""
simple addition
""")
parser.add_argument('var1', type=float, help='var1')
parser.add_argument('-var2', type=float, default=20, help='var2')
parser.add_argument('-var3', type=float, default=30, help='var3')
parser.add_argument('-var4', type=float, default=40, help='var4')
parser.add_argument('-var5', type=float, default=50, help='var5')
args = parser.parse_args()
print(args)
ss = add_vars(args.var1, args.var2, args.var3, args.var4, args.var5)
print('sum=', ss)
in which only arg1
is required and arg2
- arg5
are optional.其中只有
arg1
是必需的,而arg2
- arg5
是可选的。
I would like to call this script in another Python script with arg1
, arg3
just like in the terminal:我想在另一个 Python 脚本中使用
arg1
, arg3
调用这个脚本,就像在终端中一样:
script1.py 1 -var3 4
Does anyone know how to do this?有谁知道如何做到这一点? I have tried
os.execl
but without luck.我试过
os.execl
但没有运气。
EDIT: I'd say using subprocess
wouldn't be a "better" way but this is a way you could do it?编辑:我会说使用
subprocess
不会是一种“更好”的方式,但这是一种你可以做到的方式?
from subprocess import check_output
out = check_output(["python", "script1.py", "1", "-var3", "4"])
print(out.decode("utf-8"))
Output: Output:
Namespace(var1=1.0, var2=20, var3=4.0, var4=40, var5=50)
sum= 115.0
<empty line>
Original:原来的:
script1.py:脚本1.py:
def add_vars(var1, var2=20, var3=30, var4=40, var5=50):
sum = var1+var2+var3+var4+var5
return sum
if __name__ == '__main__':
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter,
description="""simple addition""")
parser.add_argument('var1', type=float, help='var1')
parser.add_argument('-var2', type=float, default=20, help='var2')
parser.add_argument('-var3', type=float, default=30, help='var3')
parser.add_argument('-var4', type=float, default=40, help='var4')
parser.add_argument('-var5', type=float, default=50, help='var5')
args = parser.parse_args()
print(args)
ss = add_vars(args.var1, args.var2, args.var3, args.var4, args.var5)
print('sum=', ss)
script2.py:脚本2.py:
import script1
print(script1.add_vars(1, var3=4))
var2=20, var3=30, var4=40, var5=50
sets the default values for the function (just like for argparse
) var2=20, var3=30, var4=40, var5=50
设置 function 的默认值(就像argparse
一样)
if __name__=='__main__'
resists your program functions to be called in other program so you can do something like this in in other program if __name__=='__main__'
拒绝在其他程序中调用您的程序函数,因此您可以在其他程序中执行类似的操作
from script1.py import add_vars
and since you have given arg 1 and 3 default vals in the function you with other arguments so you have to be careful while passing other args, while you are in the other file并且由于您在 function 中为您提供了 arg 1 和 3 默认值,因此您在其他文件中时必须小心传递其他 args
add_vars(arg1,arg3)
if you would have simply call script1.py then this would have not executed如果您只是调用 script1.py 那么这将不会执行
if you have further question do add a comment i'll do make my best to answer your query如果您还有其他问题,请添加评论,我会尽力回答您的问题
if you want to change vals of arg1 and arg3如果你想改变 arg1 和 arg3 的值
add_vars(arg1=29,arg3=8)
you can specify them, so that their default value is overrided您可以指定它们,以便覆盖它们的默认值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.