Python 在给定的文件夹路径中测试文件的给定路径

Python test given path to file in given path of folder

用户输入两个字符串,一个是filename,一个是folderfilename 变量是磁盘上某个文件的路径。 folder 变量是磁盘上某个文件夹的路径。我想知道文件是否位于 文件夹中(直接位于或位于其子文件夹中)。

例如:

isContains("C:\a.txt", "C:\") # True
isContains("C:\a.txt", "C:\a") # False
isContains("C:\a.txt", "D:\") # False
isContains("C:\a\b\c\d.txt", "C:\") # True
isContains("C:\a\b\c\d.txt", "C:\a\b") # True

我还做了什么:

import os
isContains = lambda filename, folder: os.path.abspath(filename).startswith(os.path.join(os.path.abspath(folder), ''))

但我相信一定有一些更优雅的方法我没有发现。因为这些代码看起来太复杂了。我该如何实现这个功能?


我的节目是 运行 Windows。但我希望代码独立于平台。

如果你没有严格要求使用os.path, I'd recommend for all path-related work use pathlib,它会节省你很多时间。

Path(PurePath) class which does exactly what you're trying to implement - Path.is_relative_to()的特殊方法。基本上,您只需要从 filename 初始化 Path 并使用 folder:

调用此方法
Path(filename).is_relative_to(folder)