簡體   English   中英

如何在 python 腳本中運行 python 腳本

[英]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 腳本中使用arg1arg3調用這個腳本,就像在終端中一樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM