При считывании данных с excel в python с помощью библиотеки win32com в массив, при выводе почему-то два раза выводит
Всем добрый день! Не понимаю почему у меня выводится два раза logic.py:
'''
import openpyxl as opx
import win32com
import win32com.client
def logic():
val1 = []
def excel_read2():
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(u'C:\\Users\\source\\DATA_MACH_0.18.xlsx')
sh = wb.Worksheets('Лист3')
sh1 = wb.Worksheets('Лист5')
val = sh.Cells(2,2).value
for i in range(3,14):
val2 = sh1.Cells(i,2).value
val1.append(val2)
print(val)
print(val1)
wb.Save()
#закрываем таблицу
wb.Close()
#закрываем COM объект
Excel.Quit()
excel_read2()
logic()
'''
main.py:
'''
import logic
def MainFunction():
logic.logic()
MainFunction()
'''
ожидаю вывод:
-1.25
[1.5, 1.5, 1.5, 1.4, 1.2, 1.0, 0.85, 0.75, 0.68, 0.6, 0.5]
получаю:
-1.25
[1.5, 1.5, 1.5, 1.4, 1.2, 1.0, 0.85, 0.75, 0.68, 0.6, 0.5]
-1.25
[1.5, 1.5, 1.5, 1.4, 1.2, 1.0, 0.85, 0.75, 0.68, 0.6, 0.5]
Заранее спасибо, кто откликнется)
Ответы (1 шт):
Автор решения: Интик
→ Ссылка
import openpyxl as opx
import win32com
import win32com.client
def excel_read2():
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(u'C:\\Users\\source\\DATA_MACH_0.18.xlsx')
sh = wb.Worksheets('Лист3')
sh1 = wb.Worksheets('Лист5')
val = sh.Cells(2,2).value
for i in range(3,14):
val2 = sh1.Cells(i,2).value
val1.append(val2)
print(val)
print(val1)
wb.Save()
wb.Close()
Excel.Quit()
def foo():
pass
def fun():
pass
def logic():
val1 = []
excel_read2()
foo()
fun()
вот развёрнутый пример, который я спрашивал в комментариях(почему нельзя вынести функцию из функции?) ведь более читабельно выходит. фу и фун это те функции , которые будут в дальнейшем.функция майн остаётся такойже.
а ответ на главный вопрос: функция логик вызывается 2 раза.из майна и после самой функции.