Python: Copying files with special characters in path
Posted
by erikderwikinger
on Stack Overflow
See other posts from Stack Overflow
or by erikderwikinger
Published on 2010-05-27T07:24:13Z
Indexed on
2010/05/27
8:21 UTC
Read the original article
Hit count: 254
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'
© Stack Overflow or respective owner