gpt4 book ai didi

python - 如何使用 Python 从 Windows 7 中迭代连接的 iPhone 上的照片?

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:38 25 4
gpt4 key购买 nike

当我将 iPhone 连接到 Windows 7 系统时,Windows 资源管理器会打开 DCIM 内容的虚拟文件夹。我可以通过 Pywin32 (218) 访问 shell 库接口(interface),如下所述:Can I use library abstractions in python?

给定一个在 Windows 资源管理器中工作的面向用户的编辑路径 (SIGDN_DESKTOPABSOLUTEEDITING),并启动 Windows 照片查看器:

Computer\My iPhone\Internal Storage\DCIM\828RTETC\IMG_2343.JPG

如何获取解析路径 (SIGDN_DESKTOPABSOLUTEPARSING) 以便与 SHCreateItemFromParsingName() 一起使用来创建 ShellItem? (我将从中绑定(bind)一个流并复制到本地磁盘,如下所示:Can images be read from an iPhone programatically using CreateFile in Windows?)

from win32com.shell import shell

edit_path = r'Computer\My iPhone\Internal Storage\DCIM\828RTETC\IMG_2343.JPG'
parse_path = # How to convert edit_path to a SIGDN_DESKTOPABSOLUTEPARSING path?
i = shell.SHCreateItemFromParsingName(parse_path, None, shell.IID_IShellItem)

最终目标是通过 IShellFolder 接口(interface)等方式迭代 DCIM“文件夹”,并将最新照片复制到本地磁盘。我不想打开 FileOpenDialog 来解析名称。但在达到这一点之前,我认为为其中一个文件创建 ShellItem 将是一个很好的测试。

最佳答案

我认为 @jonathan-potter 的建议是更好的方法,而不是从编辑名称翻译为解析名称。下面是一个硬编码片段,展示了如何从桌面文件夹开始并排除错误处理:

from win32com.shell import shell, shellcon

desktop = shell.SHGetDesktopFolder()
for pidl in desktop:
if desktop.GetDisplayNameOf(pidl, shellcon.SHGDN_NORMAL) == "Computer":
break
folder = desktop.BindToObject(pidl, None, shell.IID_IShellFolder)
for pidl in folder:
if folder.GetDisplayNameOf(pidl, shellcon.SHGDN_NORMAL) == "My iPhone":
break
folder = folder.BindToObject(pidl, None, shell.IID_IShellFolder)
for pidl in folder:
if folder.GetDisplayNameOf(pidl, shellcon.SHGDN_NORMAL) == "Internal Storage":
break
# And so on...

关于python - 如何使用 Python 从 Windows 7 中迭代连接的 iPhone 上的照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27593315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com