Python 路径库和带有特殊字符和空格的路径

Python pathlib and paths with especial chars and white spaces

朋友。我遇到了一个问题,感谢您的帮助。 我正在编写一个 Python 程序,它将搜索整个目录树并遍历文件以查找在超过特定时间之前(例如两年多以前)最后一次访问的文件。

我正在使用 pathlib com 完成这项任务。问题是我有一些路径有特殊字符和一些空格,它导致我出现 FileNotFoundError.

这是一个例子:


# -*- coding: utf-8 -*-
from pathlib import Path

path = r"E:\MY DIR\#SOME_DIR\#SOME_SUBDIR\ANOTHER_SUBDIR\firstname.lastname\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\#!001\MicrosoftEdge\Cache\LJ53QTBW\FaktCyrWeb-Normal-0038c5aa5c3243bb2995139e9aeb9519f62f098d0e0f7fab6c8b655a292d857d[1].woff"


print(Path(path).stat().st_atime)

正如我所说,上面的代码引发了一个 FileNotFoundError 异常。

有没有办法做到这一点?要使 Python 访问此路径?

我认为 Windows 不接受超过 256 个字符的路径: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#maximum-path-length-limitation

试试这个:

#/usr/bin/python3
# -*- coding: utf-8 -*-
import os
from pathlib import Path

def longpath(path):
    regular = os.fspath(path.resolve())
    if not regular.startswith('\\?\'):
        regular = '\\?\' + regular
    return Path(regular)

path = Path(r"E:\MY             DIR\#SOME_DIR\#SOME_SUBDIR\ANOTHER_SUBDIR\firstname.lastname\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\#!001\MicrosoftEdge\Cache\LJ53QTBW\FaktCyrWeb-Normal-0038c5aa5c3243bb2995139e9aeb9519f62f098d0e0f7fab6c8b655a292d857d[1].woff")
path_long = longpath(path)
print(Path(path_long).stat().st_atime)