# Fehlermeldung in Python "invalid literal for int() with base 10"



## EmmaM95 (26. Nov 2018)

Hallo, ich habe hier folgenden Code (nur ein Teil der gesamten Klasse) und bekomme eine Fehlermeldung. Habe schon sämtliche Foren durchgeschaut und immer noch keine Lösung:

```
def get_imgAndlabel_list(filename, img_folder):
    """
    :param filename:
     each line in filename is img_name \space label
    :return:
    img names list
    label list
    """
    f = open(filename, 'r')
    lines = f.readlines()
    f.close()
    imgname_lists = []
    for i in range(len(lines)):
        img_name = lines[i].split()[0]
        imgname_lists.append(os.path.join(img_folder, img_name))
    return imgname_lists


def get_imgAndlabel_list2(filename, img_folder):
    """
    :param img_folder:
    :param filename:
     each line in filename is img_name \space label
    :return:
    img names list
    label list
    """
    f = open(filename, 'r')
    lines = f.readlines()
    f.close()
    imgname_lists = []
    label_lists = []
    for i in range(len(lines)):
        img_name, label = lines[i].split()
        imgname_lists.append(os.path.join(img_folder, img_name))
        label_lists.append(int(label))

    return imgname_lists, label_lists
```


```
Traceback (most recent call last):
  File "age_lsgan_transfer.py", line 167, in <module>
    tf.app.run()
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 125, in run
    _sys.exit(main(argv))
[code=Java]label_lists.append(int(float(label)))
    my_train()
  File "age_lsgan_transfer.py", line 88, in my_train
    source_img_227, source_img_128, face_label = load_source_batch3(FLAGS.source_file, FLAGS.root_folder, FLAGS.batch_size)
  File "./tools/source_input.py", line 129, in load_source_batch3
    img_list, label_list = get_imgAndlabel_list2(filename, img_folder)
  File "./tools/source_input.py", line 185, in get_imgAndlabel_list2
    label_lists.append(int(label))
ValueError: invalid literal for int() with base 10: '\x08'
```

Habe gesehen, dass man das auch so "lösen" kann:

```
label_lists.append(int(float(label)))
```

aber dann bekomme ich eine andere Fehlermeldung:


```
ValueError: could not convert string to float:
```

Der Code gehört zu einem Face Aging System, das trainiert werden muss. Gesamter Code:
https://github.com/dawei6875797/Fac...al-Networks/blob/master/tools/source_input.py


----------



## Dompteur (26. Nov 2018)

Schau dir einmal die Daten an, die du da einliest.
Laut Fehlermeldung "ValueError: invalid literal for int() with base 10: '\x08'" steht an der Stelle, wo du einen Integer-Wert erwartest, ein "\x08"


----------



## EmmaM95 (26. Nov 2018)

Dompteur hat gesagt.:


> Schau dir einmal die Daten an, die du da einliest.
> Laut Fehlermeldung "ValueError: invalid literal for int() with base 10: '\x08'" steht an der Stelle, wo du einen Integer-Wert erwartest, ein "\x08"



Es müsste eigentlich Bilder einlesen.


----------



## Dompteur (26. Nov 2018)

Als Kommentar steht da aber :
     param filename:
     each line in filename is img_name \space label


----------



## EmmaM95 (26. Nov 2018)

Dompteur hat gesagt.:


> Als Kommentar steht da aber :
> param filename:
> each line in filename is img_name \space label



Es ist halt nicht mein eigener Code, aber soweit ich das verstanden habe, müsste es die Titel der Bilder einlesen. Bin mir jetzt aber nicht sicher, was ich da verändern müsste damit es passt.


----------



## EmmaM95 (26. Nov 2018)

Wenn ich daraus str(label) mache, dann kommt ein anderer Fehler:

```
img_name, label = lines[i].split()
ValueError: too many values to unpack
```


----------



## Dompteur (26. Nov 2018)

Mit dem split Befehl wird ein String in eine Liste von Teilstrings aufgespalten. Die Trennung erfolgt anhand der Leerzeichen.
Mit "img_name, label" gibst du an, dass du keine Liste möchtest, sondern 2 Werte erwartest, die gleich an die beiden Variablen zugewiesen werden sollen.
Nun liefert split aber nicht in 2 sondern in mehr Werte. 
Offensichtlich haben die Daten, die du da einlesen lässt ein anderes Format als es das Programm erwartet.


----------

