Skip to content
Advertisement

Python WinError 32 The process cannot access the file because it is being used by another process

I made a script that converts pdf files into jpgs and then puts those jpgs in a specific folder. The script works fine so far but, I keep getting an error in the VScode terminal that says :

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:/Users/xxx/Desktop/pdf2jpg/src_files/Files/'

I tried closing the file before running but, it still does it

from pdf2image import convert_from_path
import glob, os
import os, subprocess
import shutil

pdfPath = "C:/Users/xxx/Desktop/pdf2jpg/src_files/Files/"
os.chdir(pdfPath)

for pdf_file in glob.glob(os.path.join(pdfPath, "*.pdf")): #converts PDF files from pdfPath then 
#converts
pages = convert_from_path(pdf_file, 500)   
for page in pages:       
    page.save(pdf_file[:-4] +".jpg", 'JPEG')

for i in os.listdir(pdfPath): #removes orginal PDF files
    if i.endswith('.pdf'):
        os.remove(i)

jpgPath = "C:/Users/xxx/Desktop/pdf2jpg/ConvertedFilesJPG/"

fileNum = 0
foldNum = 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
for base, dirs, files in os.walk(jpgPath): #checks number of folders in the destination path   
for directories in dirs:
    foldNum += 1                       
for Files in files:
    fileNum += 1
print(foldNum) #for debugging

if os.path.exists(jpgPath): 
    strNum = foldNum + 1
    fStrNum = str(strNum)
    strJpgPath = jpgPath + "Files" + fStrNum + "/"  #adds number of files in path, so new folders can 
    #be organized by name 
    shutil.move(pdfPath, strJpgPath)
Traceback (most recent call last):
  File "C:UsersxxxAppDataLocalProgramsPythonPython39libshutil.py", line 806, in move
    os.rename(src, real_dst)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:/Users/xxx/Desktop/pdf2jpg/src_files/Files/' -> 'C:/Users/xxx/Desktop/pdf2jpg/ConvertedFilesJPG/Files4/'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:UsersxxxDesktoppdf2jpgsrc_filesscript.py", line 33, in <module>
    shutil.move(pdfPath, strJpgPath)
  File "C:UsersxxxAppDataLocalProgramsPythonPython39libshutil.py", line 824, in move
    rmtree(src)
  File "C:UsersxxxAppDataLocalProgramsPythonPython39libshutil.py", line 740, in rmtree
    return _rmtree_unsafe(path, onerror)
  File "C:UsersxxxAppDataLocalProgramsPythonPython39libshutil.py", line 622, in _rmtree_unsafe
    onerror(os.rmdir, path, sys.exc_info())
  File "C:UsersxxxAppDataLocalProgramsPythonPython39libshutil.py", line 620, in _rmtree_unsafe
    os.rmdir(path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:/Users/xxx/Desktop/pdf2jpg/src_files/Files/'
PS C:UsersxxxDesktoppdf2jpg>

Advertisement

Answer

Your script starts by doing

os.chdir(pdfPath)

so the process running your script is the one holding the pdfPath directory, and preventing it from being removed by shutil.move. Just do a chdir somewhere else before moving it, for example:

chdir("C:/Users/xxx/Desktop/pdf2jpg/")
if os.path.exists(jpgPath):
    ...
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement