从一个脚本中的函数返回到另一个脚本的值,值不是全局可用的python

时间:2018-12-05 05:03:27

标签: python function scripting global openpyxl

具有两个脚本p1.py和p2.py。

p1.py具有这样的内容

if (day=='01'): /*where day=time.strftime("%d")*/
wb=p2.py(day)
for i in range(1,day_list+1):  /* genrates sheet equal to number of  days in a month)
            wb.copy_worksheet(wb['temp'])
            ws=wb['temp Copy']
            ws.title=str(i)

现在p2.py具有使用openpyxl加载Excel工作簿的功能:

wb=load_workbook(filename='.....\....\abc.xlsx')
return wb

现在在p1.py中:

if namesheet in wb.sheetnames:   /* `namesheet:
                                              chk=day[:1]
                                               if(chk=='0'):
                                                    namesheet=day[1:]
                                                else
                                                   namesheet=day */
/*do something */

这里,在if条件下出现错误:

name 'wb' is not defined
Traceback (most recent call last):

 File "E:\AshimTest\myscript\Auto_Report.py", line 133, in <module>
    if namesheet in wb.sheetnames:
NameError: name 'wb' is not defined

有人可以帮忙吗?我认为wb仅在本地if语句中出现。

我是python的新手,这怎么解决??

2 个答案:

答案 0 :(得分:1)

或者,您也可以尝试从“ p1.py”中的“ p2.py”导入load_workbook函数,例如:

from py2 import load_workbook

之后,已经在p1.py中运行

wb=load_workbook(filename='.....\....\abc.xlsx')
if namesheet in wb.sheetnames:
...
...

答案 1 :(得分:0)

哦!!!真是个愚蠢的错误。加载模板的if语句仅在当月的第一天有效。对于其余的几天,这里的逻辑是错误的,由于未输入if语句,因此未加载模板,因此wb没有值,也没有声明,因此未定义。