[英]How to run a python script inside a python script
我有一個 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)
其中只有arg1
是必需的,而arg2
- arg5
是可選的。
我想在另一個 Python 腳本中使用arg1
, arg3
調用這個腳本,就像在終端中一樣:
script1.py 1 -var3 4
有誰知道如何做到這一點? 我試過os.execl
但沒有運氣。
編輯:我會說使用subprocess
不會是一種“更好”的方式,但這是一種你可以做到的方式?
from subprocess import check_output
out = check_output(["python", "script1.py", "1", "-var3", "4"])
print(out.decode("utf-8"))
Output:
Namespace(var1=1.0, var2=20, var3=4.0, var4=40, var5=50)
sum= 115.0
<empty line>
原來的:
腳本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)
腳本2.py:
import script1
print(script1.add_vars(1, var3=4))
var2=20, var3=30, var4=40, var5=50
設置 function 的默認值(就像argparse
一樣)
if __name__=='__main__'
拒絕在其他程序中調用您的程序函數,因此您可以在其他程序中執行類似的操作
from script1.py import add_vars
並且由於您在 function 中為您提供了 arg 1 和 3 默認值,因此您在其他文件中時必須小心傳遞其他 args
add_vars(arg1,arg3)
如果您只是調用 script1.py 那么這將不會執行
如果您還有其他問題,請添加評論,我會盡力回答您的問題
如果你想改變 arg1 和 arg3 的值
add_vars(arg1=29,arg3=8)
您可以指定它們,以便覆蓋它們的默認值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.