datetime.datetime 来自 xlsx 文件的类型正在阻止进程

datetime.datetime type from xlsx file is blocking the process

我正在尝试使用线程、队列和信号量实现 excel 转换器。它运行完美,我用它在很短的时间内翻译了非常大的 XLSX 文件。

今天我试图翻译其中一份文件,但我的程序不再工作了。经过几个小时的调试,我发现当在 excel 文档中找到类型 datetime.datetime 时,它会阻止所有内容

这是我的代码和输出,可以让您更好地理解:

    print("feed raw aquired")
    for row_index in range(sheet.shape[0]):
        for col_index in range(sheet.shape[1]):
            print ("START --------------------")
            value = sheet.iat[row_index, col_index]
            print (type(value))
            print (value)
            if type(value) == str:
                print("str")
                raw_data.put({ "row" : row_index, "col" : col_index, "value" : value })
            elif math.isnan(value):
                print("nan")
                translated_data.put({ "row" : row_index, "col" : col_index, "value" : "" })
            elif type(value) == float:
                print("float")
                translated_data.put({ "row" : row_index, "col" : col_index, "value" : value })
            elif type(value) == numpy.int64 or type(value) == int:
                print("int")
                translated_data.put({ "row" : row_index, "col" : col_index, "value" : value })
            else:
                print("else")
                translated_data.put({ "row" : row_index, "col" : col_index, "value" : value })
            print ("END --------------------")
    sem.release()
    print("feed raw released")

输出为

START --------------------
<class 'float'>
nan
nan
END --------------------
START --------------------
<class 'numpy.float64'>
nan
nan
END --------------------
START --------------------
<class 'str'>
기저귀
str
END --------------------
START --------------------
<class 'str'>
M900009355
str
END --------------------
START --------------------
<class 'str'>
네이쳐러브메레 소프트핏 밴드 특대형 4팩
str
END --------------------
START --------------------
<class 'str'>
제조일자
str
END --------------------
START --------------------
<class 'str'>
2021-01-20
str
END --------------------
START --------------------
<class 'float'>
2.0
float
END --------------------
START --------------------
<class 'float'>
9110.0
float
END --------------------
START --------------------
<class 'int'>
18220
int
END --------------------
START --------------------
<class 'float'>
34900.0
float
END --------------------
START --------------------
<class 'str'>
리퍼상품
str
END --------------------
START --------------------
<class 'float'>
nan
nan
END --------------------
START --------------------
<class 'float'>
nan
nan
END --------------------
START --------------------
<class 'numpy.float64'>
nan
nan
END --------------------
START --------------------
<class 'str'>
기저귀
False 0
str
END --------------------
START --------------------
<class 'str'>
M900009357
str
END --------------------
START --------------------
<class 'str'>
네이쳐러브메레 소프트핏 팬티 특대형 4팩
str
END --------------------
START --------------------
<class 'str'>
유통기한
str
END --------------------
START --------------------
<class 'datetime.datetime'>
2024-01-12 00:00:00

当函数遇到一个datetime.datetime。它阻止它甚至不继续的所有内容并打印 END--------------------

我想了解这是一个非常奇怪的行为,我想我以前从未见过这样的事情。如果你能帮助我那就太好了 :D

如果你想在这里看到这个翻译器的完整代码是:https://github.com/mathias-vandaele/xlsx-translator

谢谢大家

math.isnan(value) 当值为 datetime.datetime 时似乎无声地中断

使用 pandas 中的 pd.isna(value) 似乎解决了问题