Python: Copying files with special characters in path
- by erikderwikinger
Hi
is there any possibility in Python 2.5 to copy files having special chars (Japanese chars, cyrillic letters) in their path?
shutil.copy cannot handle this.
here is some example code:
import copy, os,shutil,sys
fname=os.getenv("USERPROFILE")+"\\Desktop\\testfile.txt"
print fname
print "type of fname: "+str(type(fname))
fname0 = unicode(fname,'mbcs')
print fname0
print "type of fname0: "+str(type(fname0))
fname1 = unicodedata.normalize('NFKD', fname0).encode('cp1251','replace')
print fname1
print "type of fname1: "+str(type(fname1))
fname2 = unicode(fname,'mbcs').encode(sys.stdout.encoding)
print fname2
print "type of fname2: "+str(type(fname2))
shutil.copy(fname2,'C:\\')
the output on a Russian Windows XP
C:\Documents and Settings\+????????????\Desktop\testfile.txt
type of fname: <type 'str'>
C:\Documents and Settings\?????????????\Desktop\testfile.txt
type of fname0: <type 'unicode'>
C:\Documents and Settings\+????????????\Desktop\testfile.txt
type of fname1: <type 'str'>
C:\Documents and Settings\?????????????\Desktop\testfile.txt
type of fname2: <type 'str'>
Traceback (most recent call last):
File "C:\Test\getuserdir.py", line 23, in <module>
shutil.copy(fname2,'C:\\')
File "C:\Python25\lib\shutil.py", line 80, in copy
copyfile(src, dst)
File "C:\Python25\lib\shutil.py", line 46, in copyfile
fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: 'C:\\Documents and Settings\\\x80\
xa4\xac\xa8\xad\xa8\xe1\xe2\xe0\xa0\xe2\xae\xe0\\Desktop\\testfile.txt'