Search code examples
pythonpermissions

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


My code is upload video to facebook using Graph API, It was uploading successfully, but after upload, iam getting error when iam trying to delete the video

import requests
videoTitle = 'Title of the post'
videoDesc = 'some xyz desc'
excel_path = fr'Output/Social/Facebook API.xlsx'
df = pd.read_excel(excel_path)
pageID = df['PageID'].tolist()[0]
access_token = df['Access Token'].tolist()[0]
url = f'https://graph-video.facebook.com/v17.0/{pageID}/videos'
try:
    vidFile = r"Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4"
    files = {'source': open(vidFile, 'rb')}
    payload = {
        'access_token': access_token,
        'title': videoTitle,
        'description': videoDesc,
    }
    response = requests.post(url, files=files, data=payload, verify=False).json()
    files['source'].close()
    video_id = response['id']
    if video_id:
        print(f'https://www.facebook.com/{pageID}/videos/{video_id}')
except:
    pass


os.remove(r"Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4")

This is the error message

Traceback (most recent call last):
  File "D:\My Work\Drake YT Shorts\test3.py", line 92, in <module>
    os.remove(r"Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4")
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4'

I am closing the file files['source'].close() after upload, but that doesn't resolve the issue.


Solution

  • @1adog1 given solution works for me.

    import requests
    videoTitle = 'Title of the post'
    videoDesc = 'some xyz desc'
    excel_path = fr'Output/Social/Facebook API.xlsx'
    df = pd.read_excel(excel_path)
    pageID = df['PageID'].tolist()[0]
    access_token = df['Access Token'].tolist()[0]
    url = f'https://graph-video.facebook.com/v17.0/{pageID}/videos'
    vidFile = r"Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4"
    files = {'source': open(vidFile, 'rb')}
    try:
        
        payload = {
            'access_token': access_token,
            'title': videoTitle,
            'description': videoDesc,
        }
        response = requests.post(url, files=files, data=payload, verify=False).json()
        video_id = response['id']
        if video_id:
            print(f'https://www.facebook.com/{pageID}/videos/{video_id}')
    except:
        pass
    files.clear()
    
    os.remove(r"Output/ImagestoVideo/1616 Mackinac Dr. Crowley.mp4")