Как избежать получения ftplib.error_perm: 550 Процесс не может получить доступ к файлу, поскольку он используется другим процессом? - PullRequest
0 голосов
/ 19 февраля 2020

Я пишу код python для загрузки множества файлов изображений на FTP-сервер с помощью ftplib для моей компании, но мой код должен применяться для нестабильной работы сети. Поэтому при загрузке файла изображения на FTP-сервер может произойти сбой, и я получаю сообщение об ошибке " ftplib.error_perm: 550 Процесс не может получить доступ к файлу, поскольку он используется другим процессом " , Кстати, FTP-сервером управляет другая компания.

Мои файлы изображений загружаются с кодом:

with open(img_list[0][0], "rb") as oFile:
    check_chars = oFile.read()[-2:]
# End of with-block
if check_chars != b"\xff\xd9":
    time.sleep(1)
    continue
# End of if-condition

print("準備上傳: %s" %(img_list[0][1]))
if cut_switch:
    img = Cut_image(img_list[0][0])
    ftp.storbinary('STOR '+img_list[0][1], img)
else:
    with open(img_list[0][0], 'rb') as imageReader:
        ftp.storbinary('STOR '+img_list[0][1], imageReader)
    # End of with-block
# End of if-else-condition

Я надеюсь, что кто-нибудь может дать мне предложения по устранению ошибки, пожалуйста.

1 Ответ

0 голосов
/ 19 февраля 2020

Попробуйте:

    oFile = open(img_list[0][0], "rb") 
    check_chars = oFile.read()[-2:]
    if check_chars != b"\xff\xd9":
        time.sleep(1)
    oFile.close()

    print("準備上傳: %s" %(img_list[0][1]))
    if cut_switch:
        img = Cut_image(img_list[0][0])
        ftp.storbinary('STOR '+img_list[0][1], img)
    else:
        with open(img_list[0][0], 'rb') as imageReader:
            ftp.storbinary('STOR '+img_list[0][1], imageReader)

Ошибка возникает из-за того, что вы не закрыли файл (открываете его), и вам следует помнить, что вам не нужно continue, чтобы выйти из if еще условие

...