1
ClericPy 2020-03-20 10:54:49 +08:00
尽早使用 pathlib
过长的情况按理说不会有问题, 你判断的时候打印出来看看路径是不是转义了, Windows 上默认确实是用反斜杠的, 好像和 DOS 年代什么什么规范有关系 |
2
augustheart 2020-03-20 10:56:29 +08:00
看图说话,就叫做短路径,ShortPath……
ansi 年代的遗毒,路径最长不超过 MAX_PATH (260) unicode 时代 windows 路径最长可达到 32,767。但是海量的 api 依然死在了短路径上…… from msdn,个人解释,可能有错。 |
3
sc3263 2020-03-20 11:00:09 +08:00 1
这个应该是 windows 下特有情况。相关解释可以看一下
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation 你也可以看一下 https://qdebug.com/2019/07/31/Python3%E5%9C%A8Windows%E7%B3%BB%E7%BB%9F%E4%B8%8A%E5%AF%B9%E9%95%BF%E8%B7%AF%E5%BE%84%E7%9A%84%E6%94%AF%E6%8C%81/ 之前我整理的一个文章。 想快速解决的话,可以试试把路径处理一下,所有的‘/’替换为 r‘\’,再在最前面加上 r‘\\?\’,作为新的路径,传入函数。 |
4
xiri 2020-03-20 11:04:33 +08:00
现在 windows 下安装 python 的时候,最后一步会有个提示问你是否需要解决 windows 下超过(?不记得具体数字了)的路径的问题,你点是就会自动处理
|
5
sc3263 2020-03-20 11:08:44 +08:00 via Android
@xiri 那个貌似需要 win10 1607 及之后的系统,配合 Python 3.6 及之后的版本,才能正常处理。
|
6
ysc3839 2020-03-20 12:56:55 +08:00 via Android
我只知道如果使用的是 Unicode 编码的 API,可以在路径开头加上 \\?\ 来解除长文件名限制。同时楼上也提到了 Win10 某个版本开始也可以修改注册表来解除这个限制,Python 安装完就有个按钮可以自动修改这个。
PHONE_~1 这种可能叫 8.3 兼容文件名?是为了兼容只支持 DOS 8.3 文件名的程序,会自动把长的文件名映射成短的。 |
7
cz5424 2020-03-20 15:03:24 +08:00 via iPhone
把 Python 再装一遍就知道怎么处理了
|
9
no1xsyzy 2020-03-20 15:28:44 +08:00
一看就知道 Win98 的时候不玩命令行
那时候 C:\Progra~1\ 可太常见了 |