python解压函数extractall在windows上报错FileNotFoundError [Errno 2] No such file or directory

    今天遇到一个很奇葩的问题,使用pyhon脚本下载服务器上的一个打包工具到本地,然后解压到本地使用,这个脚本在我个人电脑上可以正常运行,但是在别的电脑上就报错,报错信息如下:
FileNotFoundError [Errno 2] No such file or directory
   python解压函数extractall在windows上报错FileNotFoundError [Errno 2] No such file or directory_第1张图片
   一开始以为是我调用python的解压函数用问题,我用的是zipfile的extractall函数,传递一个解压路径进去,但是查了pthon的api发现调用没有啥问题。
   于是开始怀疑是python的版本问题,我用的是3.03, 其他人有的是2.7,有的是和我一样的3.03,那么这种情况也排除了。
   就在我纠结万分,苦思不得其解,度娘也不知道原因的情况下,我查看了下报错的那个文件,压缩包里面这个问题是存在的,但是就是解压不出来。同一目录下总共有十一个文件,它是第十个,解压到第九个就卡住了,奇怪了。再仔细看了下第九个文件和第十个文件的差别, 突然有一个很恶心的答案从脑海中一闪而过,不会是文件路径超过了windows的最大限制(256字节)吧!
   python解压函数extractall在windows上报错FileNotFoundError [Errno 2] No such file or directory_第2张图片
   于是我查看了我的根目录文件名和他们的根目录名,我的也比他们少两个字符!然后我给他们改了根目录文件夹名称,结果就可以了!!!
   早期win32版本的window有限制路径的长度大小,windows7升级64位之后已经底层兼容旧版本的路径长度大小,也扩展了新的路径大小,那么python为什么还是用的是旧版本的api呢?这不是python的一个bug吗?
   我之所以会突然想起这个问题是因为我之前也跳过这个坑,记得一次使用压缩工具解压官方自带adt的 eclipse之后,把解压文件复制到另外一个磁盘,其中有一个文件就复制不过去,报的错就是因为windows 路径过长。。。
 
 
参考

你可能感兴趣的:(疑难问题解答)