Hi John, That was an excellent idea and it was the cause problem. Whether this is a bug in shutil I'm not sure.
Here is the traceback, Python 2.4.3 on Windows XP: > C:\Documents and Settings\Güstav>C:\python243\python Z:\sh.py > Copying u'C:\\Documents and Settings\\G\xfcstav\\My Documents\\My > Music\\iTunes > \\iTunes Music Library.xml' ... > Traceback (most recent call last): > File "Z:\sh.py", line 12, in ? > shutil.copy(xmlfile,"C:iTunes Music Library.xml") > File "C:\python243\lib\shutil.py", line 81, in copy > copyfile(src, dst) > File "C:\python243\lib\shutil.py", line 41, in copyfile > if _samefile(src, dst): > File "C:\python243\lib\shutil.py", line 36, in _samefile > return (os.path.normcase(os.path.abspath(src)) == > UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in > position 27: ordinal > not in range(128) Here is the code: > import _winreg > import os > import shutil > > reg = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER) > key = _winreg.OpenKey(reg, r"Software\Microsoft\Windows > \CurrentVersion\Explorer\Shell Folders", 0, _winreg.KEY_READ) > mymusic = _winreg.QueryValueEx(key, "My Music")[0] > > xmlfile = os.path.join(os.path.join(mymusic,"iTunes"),"iTunes Music > Library.xml") > print "Copying ",repr(xmlfile),"..." > > shutil.copy(xmlfile,"C:\iTunes Music Library.xml") The shutil line needed to be changed to this to be successful: > shutil.copy(xmlfile.encode("windows-1252"),"C:\iTunes Music > Library.xml" Regards, David On 27/03/2007, at 4:47 PM, John Nagle wrote: > Facundo Batista wrote: >> David Nicolson wrote: >> >> >>> Thanks, but it's definitely not the print. In original the code the >>> print statements are replaced by a call to a log method. >>> >>> Besides, the exception would be different if it was thrown >>> outside of >>> the try block. >> >> >> The best you can do is take the piece of code that has the >> problem, show >> it to us, and then copy the traceback. >> >> Regards, > > There may be some problem here with a file being recognized as > Unicode > in binary mode. That shouldn't happen, but looking at the Windows > UNICODE support, it might not be impossible. > > Information needed: > > - Platform (Windows, Linux, ...) > - Python version > - A hex dump of the first few bytes of the input file. > > John Nagle > -- > http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list