win32权限:无法删除文件

时间:2019-03-29 03:52:21

标签: python-3.x windows permissions file-permissions permission-denied

我知道这是之前提出的问题。我已经尝试了这些关于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 个答案:

答案 0 :(得分:2)

我认为您已打开文件。您需要按照in the docs的说明将其关闭:

  

如果打开了一个文件,则只要SoundFile对象存在,它就会一直保持打开状态。当对象被垃圾回收时,文件关闭,但是您应该使用soundfile.SoundFile.close()方法或上下文管理器显式关闭文件