Есть ли способ в Python 2.5 скопировать файлы, имеющие специальные символы (японские символы, кириллические буквы) на своем пути? shutil.copy
не может справиться с этим.Python: Копирование файлов со специальными символами в пути
вот несколько примеров кода:
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:\\')
выход на русский 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'
Что происходит на 'shutil.copy (fname," C: \\ ")'? Похоже, вы можете кодировать то, что не нужно кодировать. – msw
вывод: IOError: [Errno 2] Нет такого файла или каталога: 'C: \\ Documents and Settings \\\ x80 \ xa4 \ xac \ xa8 \ xad \ xa8 \ xe1 \ xe2 \ xe0 \ xa0 \ xe2 \ xae \ xe0 \\ Desktop \\ testfile.txt ' – user351681
В Ubuntu Linux 'shutil.copy (« Администратор/boo »,« Администратор/foo »)' работает без проблем в Python 2.6:/ – badp