Python 在给定的文件夹路径中测试文件的给定路径
Python test given path to file in given path of folder
用户输入两个字符串,一个是filename
,一个是folder
。 filename
变量是磁盘上某个文件的路径。 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)
用户输入两个字符串,一个是filename
,一个是folder
。 filename
变量是磁盘上某个文件的路径。 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)