OneDrive освобождает место с помощью Python - PullRequest
0 голосов
/ 14 июня 2019

Я использовал OneDrive для хранения большого количества изображений, и теперь мне нужно обработать их, поэтому я синхронизировал свою папку OneDrive с моим компьютером, которая занимает относительно мало места на диске.Однако, поскольку я должен open() указать их в своем коде, они все загружаются, что займет намного больше, чем доступная память на моем компьютере.Я могу вручную использовать действие Освободить место в контекстном меню, вызываемом правой кнопкой мыши, которое синхронизирует их, не занимая места.

Я ищуспособ сделать то же самое, но вместо этого в моем коде, после каждого обрабатываемого мной изображения.

Попытка найти, как получить команды пунктов контекстного меню, привела меня к этим двум местам в реестре:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Directory \ shell

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes * \ shellex \ ContextMenuHandlers

Однако я не смог найти ничего, связанного с этими у этих деревьев слишком много ключей, чтобы проверять их вслепую.Также это сообщение на форуме (внешняя ссылка) показывает несколько способов автоматического освобождения места, но, похоже, оно влияет на все файлы и ограничено полными днями.

Так есть ли способили получить доступ к этой команде или освободить место в python?

1 Ответ

0 голосов
/ 14 июня 2019

Согласно этому сообщению Майкрософт можно вызвать Attrib.exe , чтобы сделать подобные манипуляции с файлами.

Этомаленький фрагмент делает работу для использования файла.Как показано в связанном посте, это также можно сделать для всего содержимого папки, используя аргумент /s и многое другое.

import subprocess

def process_image(path):
    # Open the file, which downloads it automatically
    with open(path, 'r') as img:
        print(img)

    # Free up space (OneDrive) after usage
    subprocess.run('attrib +U -P "' + path + '"')

Загрузка и освобождение места выполняются довольно быстро,но в случае параллельной работы, возможно, что некоторое дисковое пространство будет использовано в течение короткого промежутка времени.В общем, это довольно мгновенно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...