возврат значения из функции в одном скрипте в другой скрипт, значение не является глобально доступным Python - PullRequest
0 голосов
/ 05 декабря 2018

есть два скрипта 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 есть функции для загрузки книги Excel с использованием openpyxl:

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 голосов
/ 06 декабря 2018

ооо !!!какая глупая ошибкаОператор if для загрузки шаблона работал только в первый день месяца.Логика здесь была неправильной, так как в остальные дни шаблон не был загружен, так как не вводил оператор if, следовательно, wb не имел значения и объявления, поэтому не был определен.

0 голосов
/ 05 декабря 2018

В качестве альтернативы, вы можете попробовать это, импортировать функцию load_workbook из 'p2.py' в 'p1.py', например:

from py2 import load_workbook

После этого уже в p1.py запустите

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