соответствующий тип данных в python - PullRequest
2 голосов
/ 18 апреля 2020

Я новичок в python и изучаю глубокое обучение с использованием кодов Github. Я получаю ошибку TypeError: can't concat str to bytes, поэтому я попытался сопоставить тип данных.

old:

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

new:

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

, но возникла та же ошибка, поэтому Я хочу знать, как исправить ошибку. fileGenre является байтовой переменной из модуля eyed3, а fileID является переменной типа int.

это часть кода:

    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)

Ответы [ 3 ]

3 голосов
/ 18 апреля 2020

Вы можете только объединить str до str, поэтому при попытке объединить str и bytes это вызовет ошибку. Вы можете использовать метод bytes.decode для возврата декодирования строки из заданных байтов.

Использование:

newFilename = fileGenre.decode("utf-8") + "_" + str(fileID)
1 голос
/ 18 апреля 2020

вы не можете использовать строку между двумя байтами значения конкатенации ("_")

, поэтому вы можете использовать это -

newFilename = str (fileGenre) + "" + str (fileID) newFilename = fileGenre + "" + str (байты (fileID))

1 голос
/ 18 апреля 2020

Использование:

new_filename = "{} _ {}". Format (fileGenre, str (file_id))

...