所以我几天来一直在努力解决这个问题,我就是想不通。我读了this、this和this,我觉得我一定遗漏了什么。在
我试图用以下代码将具有复杂unicode标题的简单文本文件复制到临时文件夹中:self._temp_path = tempfile.mkdtemp()
self.src = os.path.join(self._temp_path, 'src')
os.makedirs(self.src)
self.dst = os.path.join(self._temp_path, 'dst')
os.makedirs(self.dst)
self.dirname = dirname = os.path.join(os.path.dirname(__file__), 'testfiles')
f = u'file-\xe3\x82\xa8\xe3\x83\xb3\xe3\x83\x89\xe3\x83\xac\xe3\x82\xb9.txt'
src = os.path.join(dirname, f)
dst = os.path.join(self.src, f)
shutil.copy2(src, dst)
我在执行测试时收到以下消息:
^{pr2}$
我试过用这两种方法shutil.复制以及shutil.copy2号文件,他们产生了相同的结果。我也尝试过改变:shutil.copy2(src, dst)
收件人:shutil.copy2(src.encode('utf-8'), dst.encode('utf-8'))
但由于编码损坏了文件名,因此出现了此错误消息:src = '/home/phil/projects/unicode_copy/tests/testfiles/file-\xc3\xa3\xc2\x82\xc2\xa8\xc3\xa3\xc2\x83\xc2\xb3\xc3\xa3\xc2\x83\xc2\x89\xc3\xa3\xc2\x83\xc2\xac\xc3\xa3\xc2\x82\xc2\xb9.txt'
dst = '/tmp/tmpCsb3qW/src/file-\xc3\xa3\xc2\x82\xc2\xa8\xc3\xa3\xc2\x83\xc2\xb3\xc3\xa3\xc2\x83\xc2\x89\xc3\xa3\xc2\x83\xc2\xac\xc3\xa3\xc2\x82\xc2\xb9.txt'
def copyfile(src, dst):
...
> with open(src, 'rb') as fsrc:
E IOError: [Errno 2] No such file or directory: '/home/phil/projects/unicode_copy/tests/testfiles/file-\xc3\xa3\xc2\x82\xc2\xa8\xc3\xa3\xc2\x83\xc2\xb3\xc3\xa3\xc2\x83\xc2\x89\xc3\xa3\xc2\x83\xc2\xac\xc3\xa3\xc2\x82\xc2\xb9.txt'
在代码的不同点尝试了encode()和decode()的许多其他组合之后,我放弃了。声明unicode文件名并将其传递给的正确方法是什么收到吗?在