Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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_Variables - Fatal编程技术网

将python变量传递给另一个脚本

将python变量传递给另一个脚本,python,variables,Python,Variables,我对使用python编程相当陌生。因此,请提前道歉: 我有两个python脚本,它们应该共享变量。此外,第一个脚本(first.py)应该调用第二个脚本(second.py) first.py: import commands x=5 print x cmd = "path-to-second/second.py" ou = commands.getoutput(cmd) print x import commands x=5 print x cmd = "path-to-second/sec

我对使用python编程相当陌生。因此,请提前道歉: 我有两个python脚本,它们应该共享变量。此外,第一个脚本(first.py)应该调用第二个脚本(second.py)

first.py:

import commands
x=5
print x
cmd = "path-to-second/second.py"
ou = commands.getoutput(cmd)
print x
import commands
x=5
print x
cmd = "path-to-second/second.py " + str(x)
ou = commands.getoutput(cmd)
第二,py看起来像这样

print x
x=10
print x
我希望产出: 5. 5. 10 十,

原则上,我需要一种在两个脚本之间进行通信的方法。做这项工作的任何解决方案都是完美的

谢谢你的帮助


Tim

每个python脚本都有自己的根作用域,在本例中,您正在启动另一个完全独立的进程,因此它的
x
与其他脚本的
x
完全不同,否则每个python脚本都必须具有唯一的变量名以避免冲突

您可能需要在命令行上提供
second.py
所需的值。下面是一个简单的方法:

first.py:

import commands
x=5
print x
cmd = "path-to-second/second.py"
ou = commands.getoutput(cmd)
print x
import commands
x=5
print x
cmd = "path-to-second/second.py " + str(x)
ou = commands.getoutput(cmd)
第二点:

import sys
x = int(sys.argv[1]) # sys.argv[0] is "second.py"
print x
x=10
print x

在第二个.py中,您将需要这些行

from sys import argv
x = argv[1]   #Second argument (starts at 0, which is the script name)
然后您的first.py应该执行second.py,例如

import os
os.system("python second.py " + x)

我想扩大我的问题。(我不确定这样做是否正确,因此再次提前道歉。)谢谢您的帮助这样,我就可以在second.py中使用first.py的变量。在second.py运行完毕后,有没有一种简单的方法可以在first.py中使用second.py的变量?我可以考虑在一个单独的文件中写入变量/值,然后在中读取。还有其他更直接的方法吗?谢谢你的帮助!