OneDrive使用Python释放空间

OneDrive使用Python释放空间,python,onedrive,Python,Onedrive,我一直在使用OneDrive存储大量图像,现在我需要处理这些图像,因此我将OneDrive文件夹同步到我的计算机上,这相对不占用磁盘空间。但是,由于我必须在我的代码中open()它们,所以它们都会被下载,这将占用比我计算机上可用内存多得多的内存。我可以手动使用右键单击上下文菜单中的释放空间操作,这样可以在不占用空间的情况下保持它们的同步 我正在寻找一种方法来做同样的事情,但在我的代码中,在我处理每个图像之后 试图找到如何获取上下文菜单项的命令,我找到了注册表中的以下两个位置: HKEY\U本地\

我一直在使用OneDrive存储大量图像,现在我需要处理这些图像,因此我将OneDrive文件夹同步到我的计算机上,这相对不占用磁盘空间。但是,由于我必须在我的代码中
open()
它们,所以它们都会被下载,这将占用比我计算机上可用内存多得多的内存。我可以手动使用右键单击上下文菜单中的释放空间操作,这样可以在不占用空间的情况下保持它们的同步

我正在寻找一种方法来做同样的事情,但在我的代码中,在我处理每个图像之后

试图找到如何获取上下文菜单项的命令,我找到了注册表中的以下两个位置:

HKEY\U本地\U机器\软件\类\目录\外壳

HKEY\U LOCAL\U MACHINE\SOFTWARE\Classes*\shellex\ContextMenuHandler

然而,我找不到任何与之相关的东西,而且那些树有太多的钥匙,无法盲目检查。另外(外部链接)显示了一些自动释放空间的方法,但它似乎会影响所有文件,并且仅限于整天的间隔

那么,有没有办法访问该命令或释放python中的空间呢?

根据这一点,可以调用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 + '"')

下载和释放空间的速度相当快,但如果并行运行,可能会在短时间内消耗一些磁盘空间。但是,一般来说,这是非常即时的。

除了Mat的答案之外。如果您使用的是Mac电脑,则可以将Attrib.exe替换为“/Applications/OneDrive.App/Contents/MacOS/OneDrive/unpin”,使文件仅联机

导入子流程
path=“/Users/OneDrive/file.png”
subprocess.run([“/Applications/OneDrive.App/Contents/MacOS/OneDrive”,“/unpin”,path])