2017-09-26 61 views
1

我想选择与那些文件名超过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') 
+0

,你能否告诉我们您收到什么样的错误? – pstatix

回答

0

你的函数返回一个字符串。比较与诠释

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') 
0

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

你可以将字符串但是转换为数字:

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

注意int()NbrBlock将字符串(如果可能)转换为整数左右。

0

我认为你需要转换回到NbrBlock为整数的拆分将返回字符串作为发生。所以你有A = 60,但你的NbrB是'119',它是字符串。所以只需将您的NbrBNbrNBlock转换为整数。

见下文:

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