使用Python脚本中的参数调用Python脚本
假设我有一个名为使用Python脚本中的参数调用Python脚本,python,Python,假设我有一个名为script1.py的Python脚本,其中包含以下代码: import sys name = sys.argv[1] print("Bye", name) 第二个Python脚本调用第一个: import sys name = sys.argv[1] print("Hello", name) import script1 如何将参数从第二个脚本传递到第一个脚本,如给定示例中所示 当我从终端运行脚本时,我希望输出如下所示: >> python script2.py
script1.py
的Python脚本,其中包含以下代码:
import sys
name = sys.argv[1]
print("Bye", name)
第二个Python脚本调用第一个:
import sys
name = sys.argv[1]
print("Hello", name)
import script1
如何将参数从第二个脚本传递到第一个脚本,如给定示例中所示
当我从终端运行脚本时,我希望输出如下所示:
>> python script2.py Bob
Hello Bob
Bye Bob
在您执行此操作的方式中有两个选项(尽管您的示例现在确实有效,因为
sys.argv
对于两个脚本都是相同的,但在您希望传递泛型参数的泛型情况下不会)
使用操作系统
import os
os.system('python script1.py {}'.format(name))
使用子流程
import subprocess
subprocess.Popen(['python', 'script1.py', name])
IMO,更好的方法是将脚本1的逻辑变成函数
# script1.py
import sys
def bye(name):
print("Bye", name)
if __name__ == '__main__': # will only run when script1.py is run directly
bye(sys.argv[1])
然后在script2.py中
# script2.py
import sys
import script1
name = sys.argv[1]
print("Hello", name)
script1.bye(name)
在您执行此操作的方式中有两个选项(尽管您的示例现在确实有效,因为
sys.argv
对于两个脚本都是相同的,但在您希望传递泛型参数的泛型情况下不会)
使用操作系统
import os
os.system('python script1.py {}'.format(name))
使用子流程
import subprocess
subprocess.Popen(['python', 'script1.py', name])
IMO,更好的方法是将脚本1的逻辑变成函数
# script1.py
import sys
def bye(name):
print("Bye", name)
if __name__ == '__main__': # will only run when script1.py is run directly
bye(sys.argv[1])
然后在script2.py中
# script2.py
import sys
import script1
name = sys.argv[1]
print("Hello", name)
script1.bye(name)
我会用一个回调函数返回你想要的值你说得对。我没有意识到两个脚本都共享了这些参数。谢谢我会用一个回调函数返回你想要的值你说得对。我没有意识到两个脚本都共享了这些参数。谢谢问题是script1.py逻辑比这里显示的要复杂得多。这就是为什么我不想把逻辑放到函数中,但你是对的,那一定是最好的解决方案。谢谢一般来说,不要像编写bash脚本那样编写python。始终将逻辑放在
main
函数或其他东西中,然后使用if\uuuuuu name\uuuuuu=='\uuuuuuu main\uuuu':
技巧。如果这样做有效,您能接受答案吗:)问题是script1.py逻辑比这里显示的要复杂得多。这就是为什么我不想把逻辑放到函数中,但你是对的,那一定是最好的解决方案。谢谢一般来说,不要像编写bash脚本那样编写python。始终将逻辑放在main
函数或其他东西中,然后使用if\uuuuuu name\uuuuuu=='\uuuuuuu main\uuuu':
技巧。如果这有效,你能接受答案吗:)