【问题标题】:python win32com shell.SHFileOperation - any way to get the files that were actually deleted?python win32com shell.SHFileOperation - 有什么方法可以获取实际删除的文件?
【发布时间】:2015-05-17 04:07:52
【问题描述】:

在我维护的代码中,我遇到了:

from win32com.shell import shell, shellcon
# ...
result,nAborted,mapping = shell.SHFileOperation(
        (parent,operation,source,target,flags,None,None))

Python27\Lib\site-packages\win32comext\shell\(注意 win32comext)我只有一个 shell.pyd 二进制文件。

  1. shell.SHFileOperation 删除的返回值是多少(上面调用中的operation=FO_DELETE)? shell.pyd 的代码在哪里?
  2. 能否从该返回值中获取实际删除的文件列表,还是必须事后手动检查?

编辑:接受的答案答案 Q1 - 查看pywin32-219\com\win32comext\shell\src\shell.cpp 的来源我看到static PyObject *PySHFileOperation() 代表SHFileOperation,它似乎没有返回有关哪些文件未能被删除的任何信息 /em> - 所以我猜 Q2 的答案是“否”。

【问题讨论】:

    标签: python-2.7 pywin32 shfileoperation


    【解决方案1】:

    ActiveState Python帮助包含SHFileOperationdescription

    shell.SHFileOperation

    int, int = SHFileOperation(操作)

    复制、移动、重命名或删除文件系统对象。


    参数

    操作:SHFILEOPSTRUCT

    定义要执行的操作。


    返回值

    结果是一个包含 int 结果的元组 函数本身,以及 fAnyOperationsAborted 成员的结果 手术后。如果 Flags 包含 FOF_WANTMAPPINGHANDLE,则返回 元组将有一个包含 2 元组序列的第三个成员 重命名文件的旧文件名和新文件名。这只会有任何 指定 FOF_RENAMEONCOLLISION 时的内容,以及一些文件名 实际发生了冲突。

    源码可以在这里下载:http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/(pywin32-219.zip)

    只需打开包装并转到.\pywin32-219\com\win32comext\shell\src\

    【讨论】:

    • 谢谢 - 你能添加一个指向活动 python 的链接吗?另外,那些FOF_WANTMAPPINGHANDLE 映射在移动文件时有效-我对删除感兴趣-我想在调用shell.SHFileOperation(FO_DELETE) 后避免for fil in toDelete: if file.exists(): updateSomeUI(fil) 循环(这可能会引发(?))
    • 对于那些像我一样不知道 wahtr AS Python is: stackoverflow.com/a/1352541/281545
    • 你试过shutil.rmtree(...)吗?如果不删除,它有onerror 参数来设置处理程序。
    • source 是一个文件或文件列表(不是树)+ 写这个的人显然想要 Windows 本机对话框 - 接受虽然导致到源的链接也部分回答 Q2 :)跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多