2011-01-30 74 views
1

假设我有两个路径:第一个(可能是文件或文件夹路径):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上工作,但如果您向我推荐一些跨平台的技巧,这将非常棒。

回答

1

使用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 
+0

嗯,这与我在我的问题中提出的问题不一样吗? – ikostia 2011-01-30 16:05:18

0

从文件路径解析文件名,并做

os.path.exists(full_folder_path + '/' + file_name) 
+0

如果我想检查'/home/ikostia/1.txt'是否在'/ home'内,那么这是行不通的。当正确答案为真时,你的算法给出错误。 – ikostia 2011-01-30 16:00:55

相关问题