Разрешение win32: невозможно удалить файл - PullRequest
0 голосов
/ 29 марта 2019

Я знаю, что это вопрос, который задавался ранее.Я перепробовал все возможные решения, представленные в этих запросах на stackoverflow, но ни одно из них не сработало.

Итак, у меня есть этот код на python, в котором я пытаюсь удалить файлы, в частности аудиофайлы (в формате wav).Я не знаю, почему Windows не позволяет мне удалять файлы.

Здесь возникает ошибка ----> os.remove (j) PermissionError: [WinError 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом: 'æ1.wav'

Это меня покалечило.Потому что я не вижу, чтобы этот файл был открыт или использован где-либо еще, кроме того, в котором я сейчас использую.

import soundfile as sf
import os

phon=['a','æ', 'ʌ','ɔ','ɑʊ', 'ɑɪ', 'b', 'ʧ', 'd', 'ð', 'ɛ', 'ɜɹ', 'eɪ', 'f', 'ɡ', 'h', 'i', 'ɪː', 'ʤ', 'k','l','m','n', 'ŋ', 'oʊ',
       'p','ɹ', 's', 'ʃ', 't', 'θ', 'ʊ', 'u', 'v', 'w', 'j', 'z','ʒ','ɔɪ' ]

count=0
for i in phon:
    path='C:\\Users\\enviz\\pron_dictionaries-master\\all_words\\all_phonemes\\'+i
    os.makedirs(path , exist_ok=True)
    os.chdir(path)
    x=len(os.listdir(os.getcwd())) 
    files = os.listdir(path)


    for j in files:
        f = sf.SoundFile(j)
        duration = (len(f) / f.samplerate)
        size_of_audio = (os.path.getsize(j))/1024


        #get rid of files less than 3KB
        if(size_of_audio<=3 or duration<0.15):

                os.remove(j) #the error is on this line

1 Ответ

3 голосов
/ 29 марта 2019

Я думаю, у вас есть файл открыт. Вы должны закрыть его, как указано в документах :

Если файл открыт, он остается открытым до тех пор, пока существует объект SoundFile. Файл закрывается, когда объект собирается сборщиком мусора, но вы должны использовать метод soundfile.SoundFile.close () или менеджер контекста, чтобы явно закрыть файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...