2017-09-26 1 views
1

Ich mag die Spuren mit der Nummer wählen, die mehr als 60Wie vergleicht man den Namen einer Datei mit einer Nummer?

Beispiel für Dateinamen ist: bloc119_5950_6000.npy Die Anzahl dieser Datei ist: 119 Aber der Fehler ist es th Anzahl aller Dateien angezeigt, ohne jeden Vergleich:

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

Können Sie uns zeigen, welche Fehler Sie erhalten? – pstatix

Antwort

0

Ihre Funktion gibt eine Zeichenfolge zurück. Ein Vergleich erfolgt mit 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') 
0

Du vergleichst Strings NbrB (Teil des Datei-Namen) mit ganzen Zahlen A. Das gibt Ihnen kein aussagekräftiges Vergleichsergebnis (Python 2) oder einen Fehler (Python 3).

Sie könnten jedoch die Zeichenfolge in eine Zahl umwandeln:

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

Notiere die int() um die NbrBlock, die die Zeichenfolge (falls möglich) in eine ganze Zahl konvertiert.

0

Ich glaube, Sie NbrBlock konvertieren müssen zurückgegeben, wie Split auf Integer als String zurück. Sie haben also A = 60, aber Ihre NbrB ist '119', die Zeichenfolge ist. So konvertieren Sie einfach NbrB oder NbrNBlock in Ganzzahl.

Siehe unten:

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