[python-win32] SHFileOperation doesn't work with UNICODE file paths (with non ascii characters)

Shailesh Kumar shaileshk at gmail.com
Fri Aug 10 19:32:08 CEST 2007


Hi,

Kindly have a look at following sample.

I am trying to copy files from a folder to another folder using SHFileOperation.
The folder name as well as file name contain characters from Hiragana
script (Japanese). Neither Copy nor Move operations work. The
operations work if the file path doesn't contain non-ascii characters.

What am I doing wrong?

I have PyWin32 - v 209.

from win32com.shell import shell, shellcon


def fileOperation(source, destination, operation):
    result = shell.SHFileOperation((0, operation,
                           source, destination,
                           shellcon.FOF_NOCONFIRMATION |
                           shellcon.FOF_NOERRORUI | shellcon.FOF_SILENT))
    if result == 0:
        raise Exception("Operation failed")
    return result

def copyFile(source, destination):
    return fileOperation(source, destination, shellcon.FO_COPY)

def moveFile(source, destination):
    return fileOperation(source, destination, shellcon.FO_MOVE)


if __name__ == '__main__':
    "Lets do some testing of the above two functions"
    import os
    import sys
    testDir = ur"D:\\SHFOTestsDir"
    os.mkdir(testDir)
    "Some hiragana characters"
    smallA = u'\u3042'
    KA = u'\u304B'
    GI = u'\u304E'
    folder1Name = KA * 10
    folder2Name = GI * 10
    folder1Path = os.path.join(testDir, folder1Name)
    folder2Path = os.path.join(testDir, folder2Name)
    os.mkdir(folder1Path)
    os.mkdir(folder2Path)
    filenames = ()
    contents = '20' * 100
    for i in range(10):
        filename = KA * (i + 5)
        filepath = os.path.join(folder1Path, filename)
        f = open(filepath, 'w')
        f.write(contents)
        f.close()
        copyFile(filepath, folder2Path)

With regards,
- Shailesh


More information about the python-win32 mailing list