今天又遇到一个问题,在写一个简单的文件备份的脚本中,使用shutil.copyfile的时候出现了No such file or dir的错误。我排查了一遍之后,发现是文件路径太长了导致Windows下不能查询到文件,也就无从谈起了复制,移动,删除等文件操作了。
经过一番查找之后,发现了两个解决方法:
2、这个解决方法是想办法告诉电脑我的路径长度很长。首先我查询了windows下文件路径的最大长度是多少,查到的结果是260.这对于绝大多数情况都足够用了,但是文件路径长的问题还是存在的。然后就看到了UNC的定义,原来windows下的文件路径的长度最大可以是3万多的长度,具体多少记不清了哈哈哈。只要在绝对路径的前面加上“\\?\”就能告诉计算机我需要使用最大的路径长度,这样就不会出现路径太长而导致的无法操作的问题了。
对于第二种解决方案,还存在一个问题,对于共享计算机目录下该怎么操作呢,因为我们知道,在共享目录下你访问其他电脑的文件的方式都是\\+计算机名+路径(例如\\hexiaoqi\test),对于这样的目录你如果前面直接加\\?\是会报错的。因为无法正确解析路径。那么对于这种情况应该怎么操作呢?在共享路径前面加上\\?\UNC\这样就ok了,注意这样拼接的时候需要对把共享计算机的前面的\\去掉。此处举一个例子(\\?\UNC\hexiaoqi\test)。