我目前在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'
我希望得到任何帮助和提前感谢。
答案 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了解更多详情。