使用 2 个 IF 时赋值前引用的局部变量 '*'



我正在尝试合并2个数据帧。由于Blobtrigger,我必须检查正在读取的是哪个文件。此外,我使用Async是因为它从一行跳到另一行(多线程(,现在python逐行执行命令,这让我更容易导航,但如果这是多余的,请告诉我。当它到达pd.merge时,我得到了这个错误:

分配之前引用的局部变量"Deb">

async def main(myblob: func.InputStream,  outputblob: func.Out[str]) -> None:
if  myblob.name.__contains__("Deb"):
logging.info("Deb was found")
Deb = read_excel_files("x", "Deb.xlsx")
logging.info("Starting cleaning Process")        
.....
logging.info("Cleaning Deb is finished")
if myblob.name.__contains__("Sach"):
logging.info("Sach was found")
Sach = read_excel_files("x", "Sach.xlsx")
logging.info("Starting cleaning Process")
........
logging.info("Cleaning Sach is finished")
Konten = pd.merge(Sach, Deb, how="outer")
outputblob.set(Konten.to_string())
logging.info("Konten is uploaded")

我认为在第一个IF中使用的变量可以在第二个IF中访问。我刚刚观察到,在这行之后

Sach = read_excel_files("x", "Sach.xlsx")

有值的Deb将被取消分配。我应该用吗?改为复制?

尝试在第一个if语句之后使用elseDeb赋值,例如None,第二个和Sach也是如此。然后将合并转移到第三个if语句下,该语句在尝试合并之前检查DebSach的真实性

类似于:

if  myblob.name.__contains__("Deb"):
...
Deb = read_excel_files("x", "Deb.xlsx")
...
else:
Deb = pd.DataFrame()
if myblob.name.__contains__("Sach"):
...
Sach = read_excel_files("x", "Sach.xlsx")
...
else:
Sach = pd.DataFrame()
if not Deb.empty and not Sach.empty:
Konten = pd.merge(Sach, Deb, how="outer")

相关内容

最新更新