Python 在从另一个文件导入参数时不断循环



我正在做一个项目,该项目从excel中获取数据并将其输入SAP。 在我尝试在文件之间导入一些变量之前,一切都运行良好。

output.py:

import openpyxl
import time
from data import *
import subprocess
wb = openpyxl.load_workbook("OutputProject.xlsm")
ws = wb.active
List = wb["List"]
Data = wb["Data"]
count = 0
for row in ws:
if not all([cell.value == None for cell in row]):
count += 1
count = count - 1
print(count)
i = 2
while i < count + 2:
vendornumber = List.cell(i,1).value  
countrycode = List.cell(i,2).value
companycode = eval(countrycode + "_cc")
market = eval(countrycode + "_market")
asd = ['python', 'test2.py']
subprocess.Popen(asd).wait()
i = i + 1
time.sleep(1)
print("Done")   

test2.py:

import sys
import win32com.client
import time
import subprocess
from output import *
def sap():
try:
path = r"C:Program Files (x86)SAPFrontEndSAPguisaplogon.exe"
subprocess.Popen(path)
time.sleep(10)
SapGuiAuto = win32com.client.GetObject('SAPGUI')
if not type(SapGuiAuto) == win32com.client.CDispatch:
return
application = SapGuiAuto.GetScriptingEngine
if not type(application) == win32com.client.CDispatch:
SapGuiAuto = None
return
connection = application.OpenConnection("ECC Production", True)
if not type(connection) == win32com.client.CDispatch:
application = None
SapGuiAuto = None
return
session = connection.Children(0)
if not type(session) == win32com.client.CDispatch:
connection = None
application = None
SapGuiAuto = None
return
except:
print(sys.exc_info()[0])
print(sys.exc_info()[1])
print(sys.exc_info()[2])
finally:
session = None
connection = None
application = None
SapGuiAuto = None
sap()

代码在没有以下行的情况下完美运行:

from output import *

但是我需要导入输出文件中定义的变量,并且此行使代码循环并一遍又一遍地进行打印(计数(。有人可以解释为什么会发生这种情况吗?

谢谢!

它运行你的代码的原因是,当你导入一个python文件时,它会运行moudule。为了阻止这种情况,您需要将代码放在main()函数中。然后你要这样做:

def main(): 
pass
if __name__ == '__main__':
main()

发生的情况是,如果正在运行的文件的名称是main,那么它将运行main()函数,但是,当它被导入时,它不会被运行。

最新更新