我有一堆从父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 ./parser.py
fileNameOnly = (eventFileName).split('/')[-1]
experimentID = fileNameOnly.split('_')[0]有什么建议吗?(以上只是我正在处理的案件的一个例子)
发布于 2016-03-23 10:33:43
简单地说,您不能只在execfile()中设置/修改局部变量--从execfile()文档
注意,默认局部变量与下面描述的函数局部变量()相同:不应尝试对默认局部变量字典进行修改。如果需要在函数execfile()返回后查看代码对局部变量的影响,则传递显式局部变量字典。execfile()不能可靠地用于修改函数的局部变量。
要获得更全面的答案,请参见这。
如果确实希望设置全局变量,可以使用显式globals参数调用execfile(),如这个答案中所述。
eventFileName = './0426_20141124T030101Z_NS3_T1outside-TEST-NS3.csv'
execfile('./b.py', globals())
print experimentID如果您真的希望设置一个在parent.py中是本地的变量,那么您可以显式地将一个局部变量字典传递给execfile()。
eventFileName = './0426_20141124T030101Z_NS3_T1outside-TEST-NS3.csv'
local_dict = locals()
execfile('./b.py', globals(), local_dict)
print(local_dict["experimentID"])https://stackoverflow.com/questions/34780235
复制相似问题