friends.我遇到了一个问题,我感谢一些帮助。 我正在编写一个 Python 程序,该程序将搜索整个目录树并迭代文件以查找那些在两年多前超过某个时间之前最后一次访问的文件。
我正在与pathlib com合作完成这项任务。问题是我有一些路径具有特殊的字符和一些空格,它导致我进入FileNotFoundError。
下面是一个示例:
# -*- coding: utf-8 -*-
from pathlib import Path
path = r"E:MY DIR#SOME_DIR#SOME_SUBDIRANOTHER_SUBDIRfirstname.lastnameAppDataLocalPackagesMicrosoft.MicrosoftEdge_8wekyb3d8bbweAC#!001MicrosoftEdgeCacheLJ53QTBWFaktCyrWeb-Normal-0038c5aa5c3243bb2995139e9aeb9519f62f098d0e0f7fab6c8b655a292d857d[1].woff"
print(Path(path).stat().st_atime)
就像我说的,上面的代码引发了一个FileNotFoundError异常。
有没有办法做到这一点?要让 Python 访问此路径?
我认为Windows不接受包含更多256个字符的路径: https://learn.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_SUBDIRANOTHER_SUBDIRfirstname.lastnameAppDataLocalPackagesMicrosoft.MicrosoftEdge_8wekyb3d8bbweAC#!001MicrosoftEdgeCacheLJ53QTBWFaktCyrWeb-Normal-0038c5aa5c3243bb2995139e9aeb9519f62f098d0e0f7fab6c8b655a292d857d[1].woff")
path_long = longpath(path)
print(Path(path_long).stat().st_atime)