简体   繁体   中英

Python test given path to file in given path of folder

User input two strings, one is filename and the other one is folder . The filename variable is a path to some file on disk. And the folder variable is a path to some folder on disk. I want to know if the file is located in the folder (either directly or in its sub folders).

For example:

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

What I have done yet:

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

But I believe there must be some more elegant ways I didn't find out. As these code looks too complex. How should I implement this function?


My program is running on Windows. But I want the code be platform independent.

If you have no strict requirement to use os.path , I'd recommend for all path-related work use pathlib , it will save you lot of time.

There's special method of Path (PurePath ) class which does exactly what you're trying to implement - Path.is_relative_to() . Basically, you just need to initialize Path from your filename and call this method with folder :

Path(filename).is_relative_to(folder)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM