Chinese character error

Chris cwitts at gmail.com
Fri Feb 8 05:11:41 EST 2008


On Feb 8, 11:29 am, John Deas <john.d... at gmail.com> wrote:
> Hi,
>
> I made a small script to recursively copy files from a directory tree
> to an exportDir only if they have an mp3 extension :
>
> a=os.walk(os.getcwd())
> for root, dirs, files in a:
>         for currFile in files:
>                 pathCurrFile=os.path.join(root, currFile)
>                 if mp3Reg.search(pathCurrFile):
>                         shutil.copy(pathCurrFile,exportDir)
>                 else:
>                         print pathCurrFile
>
> The problem is that I get stuck with files containing name in
> Chinese :
>
> Traceback (most recent call last):
>   File "/cygdrive/c/Documents and Settings/vku/Mes documents/Ma
> musique/iTunes/i
> Tunes Music/script.py", line 21, in <module>
>     shutil.copy(pathCurrFile,exportDir)
>   File "/usr/lib/python2.5/shutil.py", line 80, in copy
>     copyfile(src, dst)
>   File "/usr/lib/python2.5/shutil.py", line 46, in copyfile
>     fsrc = open(src, 'rb')
> IOError: [Errno 2] No such file or directory: '/cygdrive/c/Documents
> and Setting
> s/vku/Mes documents/Ma musique/iTunes/iTunes Music/Podcasts/Learn
> Chinese - Chin
> esePod/785 Advanced - ????.mp3'
>
> I am using python on cygwin, so could this be the source of the error,
> and is there a way to fix this ?

It has to do with the way the OS reports the filename.  Explorers GUI
diplays it as square blocks and both CmdPrompt + Cygwin display it as
Question marks as does the os.listdir in Python.  Copying Chinese
Characters and checking their Ordinal Values directly from python gave
me for eg. 230+188+162 for 1 Chinese Charater yet Python shows it is
Ordinal 63 (a Question Mark) after reading the filename.

Those files you will need to manually copy, I even tried
find /cygdrive/d/Temp/ -name "*.mp3" -exec cp {} /cygdrive/d/Temp/
test/ \;
which yielded
cp: cannot stat '/cygdrive/d/Temp/??.mp3': No such file or directory



More information about the Python-list mailing list