zipfile 压缩文件总是报以下错误

zipfile 压缩文件总是报以下错误

return header + self.filename + extra
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbd in position 10: ordinal
not in range(12

请问这是什么错误,
以下是我的代码
target_file= path_cur+os.path.splitext(tfile)[0]+'.zip'
                    TmpFile = zipfile.ZipFile(target_file,'w')
                    TmpFile.write(self.root_path+tfile)
                    TmpFile.close()

只要一执行TmpFile.write(self.root_path+tfile) 就报上面的错误,谢指点,谢谢
我想是unicode字符串与非unicode字符串进行相加,所以要自动转换。检查一下字符串的类型,转为同一种类型后相加。
def bkedi(self,sours_parth,d_path):
        target_file = time.strftime('%Y%m%d%H%M%S') + '.zip'

        #myZipFile = zipfile.ZipFile(target_file, 'w' )# 压缩所有文件,包含子目录
        tmpZipFile = zipfile.ZipFile(target_file,'w')
   
       #source_dir = sours_parth
        source_dir  = r'C:\MH'
        #print source_dir
        for root,dirs,files in os.walk(source_dir):
            for vfileName in files:
                fileName = os.path.join(root,vfileName)
                tmpZipFile.write( fileName, fileName, zipfile.ZIP_DEFLATED )
         # 压缩完成
        tmpZipFile.close()


上面是压缩代码,为什么source_dir 用传进来的地址就是会那个错误,而用绝对地址,确能正常运行 ?
看一下传进来的参数的类型是不是unicode,然后进行相应的转换。
能否具体说一下怎么判断?谢谢
if isinstance(a, unicode):