Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python脚本中的参数调用Python脚本_Python - Fatal编程技术网

使用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':
技巧。如果这有效,你能接受答案吗:)