如何确定指定文件是否放置在指定文件夹内?
问题描述:
假设我有两个路径:第一个(可能是文件或文件夹路径):file_path
,第二个(可能只是一个文件夹路径):folder_path
。我想确定与file_path
搭配的对象是否在与folder_path
并置的对象中。如何确定指定文件是否放置在指定文件夹内?
我有这样的想法:
import os
...
def is_inside(file_path, folder_path):
full_file_path = os.path.realpath(file_path)
full_folder_path = os.path.realpath(folder_path)
return full_folder_path.startswith(full_file_path)
但恐怕有这种方法的一些缺陷。此外,我认为必须有一个更漂亮的方式来做到这一点。
该解决方案必须在Linux上工作,但如果您向我推荐一些跨平台的技巧,这将非常棒。
答
使用os.path.commonprefix
。这是一个基于你的想法的例子。
import os.path as _osp
def is_inside(file_path, folder_path):
full_file_path = _osp.realpath(file_path)
full_folder_path = _osp.realpath(folder_path)
return _osp.commonprefix([full_file_path, full_folder_path]) == \
full_folder_path
答
从文件路径解析文件名,并做
os.path.exists(full_folder_path + '/' + file_name)
+0
如果我想检查'/home/ikostia/1.txt'是否在'/ home'内,那么这是行不通的。当正确答案为真时,你的算法给出错误。 – ikostia 2011-01-30 16:00:55
嗯,这与我在我的问题中提出的问题不一样吗? – ikostia 2011-01-30 16:05:18