【问题标题】:Python pathlib and paths with especial chars and white spacesPython pathlib 和带有特殊字符和空格的路径
【发布时间】:2020-04-30 19:40:40
【问题描述】:

朋友。我遇到了一个问题,我很感激一些帮助。 我正在编写一个 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 访问这个路径?

【问题讨论】:

    标签: python exception path pathlib


    【解决方案1】:

    我认为 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)
    

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多