OneDrive使用Python释放空间

时间:2019-06-14 14:32:38

标签: python onedrive

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

我正在寻找一种方法来做同样的事情,但是在处理完每张图像之后,用我的代码代替。

试图找到上下文菜单项的命令使我进入了注册表中的两个位置:

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Directory \ shell

     

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes * \ shellex \ ContextMenuHandlers

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

那么有什么办法可以访问该命令或释放python中的空间?

2 个答案:

答案 0 :(得分:0)

根据this microsoft post,可以调用 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 + '"')

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

答案 1 :(得分:0)

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

import subprocess

path = "/Users/OneDrive/file.png"
subprocess.run(["/Applications/OneDrive.App/Contents/MacOS/OneDrive", "/unpin", path])