python';s execfile()变量作用域问题

python';s execfile()变量作用域问题,python,Python,我从父python脚本调用了大量python脚本,但在使用父python脚本中调用的脚本变量时遇到了麻烦。场景示例: parent.py: eventFileName = './0426_20141124T030101Z_NS3_T1outside-TEST-NS3.csv' execfile('./parser.py') print(experimentID) #I was hoping 0426 will be printed to screen but I am getting an er

我从父python脚本调用了大量python脚本,但在使用父python脚本中调用的脚本变量时遇到了麻烦。场景示例:

parent.py

eventFileName = './0426_20141124T030101Z_NS3_T1outside-TEST-NS3.csv'
execfile('./parser.py')
print(experimentID) #I was hoping 0426 will be printed to screen but I am getting an error: global name 'experimentID' is not defined 
fileNameOnly  = (eventFileName).split('/')[-1]
experimentID  = fileNameOnly.split('_')[0]
/parser.py

eventFileName = './0426_20141124T030101Z_NS3_T1outside-TEST-NS3.csv'
execfile('./parser.py')
print(experimentID) #I was hoping 0426 will be printed to screen but I am getting an error: global name 'experimentID' is not defined 
fileNameOnly  = (eventFileName).split('/')[-1]
experimentID  = fileNameOnly.split('_')[0]

有什么建议吗?(以上只是我正在处理的一个示例)

简而言之,您不能在
execfile()
-中设置/修改局部变量:

注意,默认局部变量的作用如下面函数locals()所述:不应尝试修改默认局部变量字典。如果需要在函数execfile()返回后查看代码对局部变量的影响,请传递显式局部变量字典。无法可靠地使用execfile()修改函数的局部变量

有关更全面的答案,请参阅

如果确实要设置全局变量,可以使用显式全局参数调用
execfile()
,如中所述:

如果您确实希望在
parent.py
中设置一个本地变量,那么您可以显式地将一个本地字典传递给
execfile()


简而言之,您不能仅在
execfile()
中设置/修改局部变量-从:

注意,默认局部变量的作用如下面函数locals()所述:不应尝试修改默认局部变量字典。如果需要在函数execfile()返回后查看代码对局部变量的影响,请传递显式局部变量字典。无法可靠地使用execfile()修改函数的局部变量

有关更全面的答案,请参阅

如果确实要设置全局变量,可以使用显式全局参数调用
execfile()
,如中所述:

如果您确实希望在
parent.py
中设置一个本地变量,那么您可以显式地将一个本地字典传递给
execfile()


不能复制。您确定正在执行您认为是的文件吗?@IgnacioVazquez Abrams抱歉,在
parent.py
中将变量名更正为
eventFileName
。您应该能够运行这两个文件。但是问题的关键是我不能在
parser.py
中使用
experimentID
,它最初是在
parser.py
中填充的,不能重复。您确定正在执行您认为是的文件吗?@IgnacioVazquez Abrams抱歉,在
parent.py
中将变量名更正为
eventFileName
。您应该能够运行这两个文件。但是问题的关键是我不能在
parser.py
中使用
experimentID
,它最初是在
parser.py
中填充的。作品很棒:-)完美。作品很棒:-)