Je suis nouveau sur python et j'étudie le deep learning en utilisant les codes Github. Je reçois une erreur TypeError: can't concat str to bytes, j'ai donc essayé de faire correspondre le type de données.

Vieille:

newFilename = fileGenre+"_"+str(fileID)

Nouvelle:

newFilename = fileGenre+"_"+bytes(fileID)

Mais la même erreur s'est produite, donc je veux savoir comment corriger l'erreur. fileGenre est un octet variable qui provient du module eyed3 et fileID est une variable de type int.

Cela fait partie du code:

    for index,filename in enumerate(files):
       fileGenre = getGenre(rawDataPath+filename)
       genresID[fileGenre] = genresID[fileGenre] + 1 if fileGenre in genresID else 1
       fileID = genresID[fileGenre]
       newFilename = fileGenre+"_"+str(fileID) #in this line, i got error
       createSpectrogram(filename,newFilename)
2
ddne 18 avril 2020 à 12:08

3 réponses

Meilleure réponse

Vous ne pouvez enchaîner que str à str, donc lorsque vous essayez de concaténer str et bytes, cela générera une erreur. Vous pouvez utiliser la bytes.decode méthode pour renvoyer un chaîne décode à partir d'octets donnés.

Utilisation:

newFilename = fileGenre.decode("utf-8") + "_" + str(fileID)
2
Shubham Sharma 18 avril 2020 à 09:29

Utilisation:

New_filename = "{} _ {}". format (fileGenre, str (file_id))

1
Mostafa.Taheri 18 avril 2020 à 09:34

Vous ne pouvez pas utiliser de chaîne entre deux octets de concaténation de valeur ("_")

Afin que vous puissiez l'utiliser -

NewFilename = str (fileGenre) + "" + str (fileID) newFilename = fileGenre + "" + str (bytes (fileID))

1
A D 18 avril 2020 à 09:35