-1

У меня есть проблема ttying для перемещения файла с помощью shutil.move(), вероятно, потому что файл все еще открыт. У меня нет проблемы, когда запустить его в отладчике ... Но когда я выполняю скрипт, у меня появляется эта ошибка:

WindowsError: [Ошибка 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом

Вот блок моего кода, который вызывает проблему. Как это можно изменить, чтобы избежать проблемы?

while len(args) > 0:
    outdir = args.pop()
    indir  = args.pop()
    inouts.append( (indir,outdir) )

    listFile = os.listdir(indir)
    os.chdir(indir)

    for report in listFile:
        abs_report = os.path.abspath(report)
        for line in open(abs_report):
            if header not in line:
                if ref in line:
                    shutil.move(abs_report,Pull)
                    logger.write("File " + report + " has been moved to " + Pull + " at " +  str(datetime.now()) + "\n")
                    break
                else:
                    shutil.move(abs_report,outdir)
                    logger.write("File " + report + " has been moved to " + outdir + " at " + str(datetime.now()) + "\n")
                    break

1 ответ1

1

Вам нужно выйти из цикла перед перемещением файла:

listFile = os.listdir(indir)
os.chdir(indir)

for report in listFile:
    abs_report = os.path.abspath(report)
    is_pull = None
    for line in open(abs_report):
        if header not in line:
            is_pull = (ref in line)
            break
    if is_pull is not None:
        if is_pull:
            shutil.move(abs_report,Pull)
            logger.write("File " + report + " has been moved to " + Pull + " at " +  str(datetime.now()) + "\n")
        else:
            shutil.move(abs_report,outdir)
            logger.write("File " + report + " has been moved to " + outdir + " at " + str(datetime.now()) + "\n")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .