python-2.7pywin32shfileoperation

python win32com shell.SHFileOperation - any way to get the files that were actually deleted?


In the code I maintain I run across:

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

In Python27\Lib\site-packages\win32comext\shell\ (note win32comext) I just have a shell.pyd binary.

  1. What is the return value of shell.SHFileOperation for a deletion (operation=FO_DELETE in the call above) ? Where is the code for the shell.pyd ?
  2. Can I get the list of files actually deleted from this return value or do I have to manually check afterwards ?

EDIT: accepted answer answers Q1 - having a look at the source of pywin32-219\com\win32comext\shell\src\shell.cpp I see that static PyObject *PySHFileOperation() delegates to SHFileOperation which does not seem to return any info on which files failed to be deleted - so I guess answer to Q2 is "no".


Solution

  • ActiveState Python help contains SHFileOperation description:

    shell.SHFileOperation

    int, int = SHFileOperation(operation)

    Copies, moves, renames, or deletes a file system object.


    Parameters

    operation : SHFILEOPSTRUCT

    Defines the operation to perform.


    Return Value

    The result is a tuple containing int result of the function itself, and the result of the fAnyOperationsAborted member after the operation. If Flags contains FOF_WANTMAPPINGHANDLE, returned tuple will have a 3rd member containing a sequence of 2-tuples with the old and new file names of renamed files. This will only have any content if FOF_RENAMEONCOLLISION was specified, and some filename conflicts actually occurred.

    Source code can be downloaded here: http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/ (pywin32-219.zip)

    Just unpack and go to .\pywin32-219\com\win32comext\shell\src\