Я использую ноутбук Python 3.6, Jupyter, подключив его к удаленной машине.У меня есть большой набор файлов mp3.Я использую FFmpeg (версия 2.8.14-0ubuntu0.16.04.1.) Для преобразования mp3 файлов в формат wav.
Мой код, приведенный ниже, перебирает список путей к файлам, и если файл представляет собой mp3, он преобразует его в формат wav и удаляет файл mp3.Код работает, но для нескольких файлов он останавливается и выдает ошибку.Я открыл эти файлы и увидел, что они не имеют длительности, и каждый из них имеет размер 600, глядя на столбец размера папки терминала, но это может быть совпадением.Ошибка file not found for 'temp_name.wav'
.
Я вижу, что эти поврежденные файлы не могут быть преобразованы в WAV.Когда я удаляю их вручную и снова запускаю код, это работает.Но у меня большие наборы данных и я не могу знать, какие файлы повреждены заранее.Есть ли способ сделать код (до преобразования файла в wav), если файл поврежден, он удаляет его и переходит к следующему файлу.Я просто не знаю, как определить состояние поврежденного файла или если файл не может быть преобразован в WAV.Заранее спасибо
# npaths is the list of full file paths
for fpath in npaths:
if (fpath.endswith(".mp3")):
cdir=os.path.dirname(fpath) # extract the directory of file
os.chdir(cdir) # change the directory to cdir
filename=os.path.basename(fpath) # extract the filename from the path
os.system("ffmpeg -i {0} temp_name.wav".format(filename))
ofnamepath=os.path.splitext(fpath)[0] # filename without extension
temp_name=os.path.join(cdir, "temp_name.wav")
new_name = os.path.join(ofnamepath+'.wav')
os.rename(temp_name,new_name) # use original filename with wav ext
old_file = os.path.join(ofnamepath+'.mp3') # find and delete the mp3
os.remove(old_file)