2017-09-26 56 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)