当前位置: 首页 > 知识库问答 >
问题:

python 2[错误32]进程无法访问该文件,因为另一个进程正在使用该文件

燕砚文
2023-03-14

我正在使用python 2,并且已经阅读了关于这个错误的几篇文章,即(这篇文章)。然而,我仍然得到错误。我所做的是:我读取目录中的文件,如果其中任何文件包含特定的字符串,我就删除目录。

def select_poo():
path = os.walk('/paila_candonga/')
texto = 'poo'
extension = '.tex'
for root, dirs, files in path:
    for documento in files:
        if extension in documento:
            with open(os.path.join(root, documento), 'r') as fin:
                for lines in fin:
                    if texto in lines:
                        shutil.rmtree(root)
                    else:
                        continue

然后我得到错误:

WindowsError: [Error 32] The process cannot access the file because it is being used by another process

我也尝试过使用绝对路径:

def select_poo():
path = os.walk('/paila_candonga/')
texto = 'poo'
extension = '.tex'
for root, dirs, files in path:
    for documento in files:
        if extension in documento:
            with open(os.path.join(root, documento), 'r') as fin:
                for lines in fin:
                    if texto in lines:
                        route = (os.path.join(root, documento))
                        files = os.path.basename(route)
                        folder = os.path.dirname(route)
                        absolut= os.path.dirname(os.path.abspath(route))
                        todo = os.path.join(absolut, files)
                        print todo

                    else:
                        continue

然后我会得到:

C:\paila_candonga\la_Arepa.tex
C:\paila_candonga\sejodio\laOlla.tex
C:\paila_candonga\sejodio\laPaila.tex

如果我一次删除一个文件,使用相同的绝对路径和操作系统。删除(“”),我不会有问题。如果我试图使用select_poo()和shutil同时删除所有文件。rmtree(文件夹)或操作系统。删除(绝对),我将有错误32。

是否有一种方法可以循环todo中的每个路径并删除它们,而不会出现错误32?

谢谢

共有1个答案

龚同
2023-03-14

它发生在这里:

with open(os.path.join(root, documento), 'r') as fin:

因此,您打开并锁定了文件,这就是您无法使用以下方法删除此文件夹的原因:

shutil.rmtree(root)

在该语句中,您必须使用语句执行之外的操作

 类似资料: