如何比较一个文件的名称和数字?

时间:2017-09-26 11:11:26

标签: python

我想选择数字超过60的痕迹。

文件名示例:bloc119_5950_6000.npy 该文件的编号为:119 但错误是它显示所有文件的所有数量而没有任何比较:

   def Extract_Number_Block(block):
        NbrBlock = block.split('bloc')[1].split('_')[0]
        return NbrBlock

    path_For_Numpy_blocks='/data/sas/blockData'

    for block in os.listdir(path_For_Numpy_blocks):
        NbrB= Extract_Number_Block(block)
        print(NbrB)
        A=60
        if NbrB>A:
            print(NbrB) 
        else:
            print('Erreur')

3 个答案:

答案 0 :(得分:0)

您正在将字符串NbrB(文件名的一部分)与整数A进行比较。这不会给你任何有意义的比较结果(Python 2)或引发错误(Python 3)。

然而,您可以将字符串转换为数字:

def Extract_Number_Block(block):
    NbrBlock = block.split('bloc')[1].split('_')[0]
    return int(NbrBlock)

请注意int()周围的NbrBlock,它会将字符串(如果可能)转换为整数。

答案 1 :(得分:0)

您的函数返回一个字符串。与int

进行比较
def Extract_Number_Block(block):
    NbrBlock = block.split('bloc')[1].split('_')[0]
    return int(NbrBlock) #converting to int

path_For_Numpy_blocks='/data/sas/blockData'

for block in os.listdir(path_For_Numpy_blocks):
    NbrB= Extract_Number_Block(block)
    print(NbrB)
    A=60
    if NbrB>A:
        print(NbrB) 
    else:
        print('Erreur')

答案 2 :(得分:0)

我认为你需要将返回的NbrBlock转换为整数,因为split将作为字符串返回。所以你有A = 60,但你的NbrB是' 119'这是字符串。所以,只需将NbrBNbrNBlock转换为整数。

见下文:

def Extract_Number_Block(block):
    NbrBlock = block.split('bloc')[1].split('_')[0]
    return int(NbrBlock)