在python中删除文件的问题

时间:2018-04-29 22:38:57

标签: python python-3.x

我目前在python中删除文件时遇到一些问题。我正在为pdf到图像转换创建一个临时文件。它位于一个包含.ppm文件的文件夹中,并将其转换为.jpg文件。然后删除临时的.ppm文件。这是代码:

    import pdf2image
    from PIL import Image
    import os

    images = pdf2image.convert_from_path('Path to pdf.pdf', output_folder='./folder name')
    file = ''
    for files in os.listdir('./folder name'):
        if files.endswith(".ppm"):
            file = files        
    path = os.path.join('folder name',file)
    im = Image.open(path)
    im.save("Path to image.jpg")
    im.close()
    os.remove(path)

问题出在os.remove(path)的最后。我收到以下错误:

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'path to ppm file'

我希望得到任何帮助和提前感谢。

1 个答案:

答案 0 :(得分:0)

不是您的问题的答案,但您可以在开始时以正确的格式输出,并首先避免问题:

pdf2image.convert_from_path('Path to pdf.pdf', output_folder='./folder name', fmt='jpg')

要真正回答您的问题,我不确定您为何会遇到此问题,因为close()确实可以防止出现此问题。也许请查看this answer并尝试使用with声明?或者权限发布可能只是延迟了,我很好奇只要抛出异常就会将remove抛入循环中。

修改:要设置名称,您需要执行以下操作:

images = pdf2image.convert_from_path('Path to pdf.pdf', output_folder='./folder name', fmt='jpg')
for image in images:
    # Save the image

pdf2image documentation看起来建议使用临时文件夹,就像在此示例中一样,然后您只需.save(...) PIL图像:

import tempfile

with tempfile.TemporaryDirectory() as path:
     images_from_path = convert_from_path('/home/kankroc/example.pdf', output_folder=path)
     # Do something here

编辑:我意识到它正在使用的原因可能是因为你需要关闭()images中的所有图像。您应该阅读pdf2image documentation及其吐出的PIL images了解更多详情。