Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在完整文件路径中搜索用户关键字,并根据搜索结果给出输出目录或文件名_Python - Fatal编程技术网

Python 在完整文件路径中搜索用户关键字,并根据搜索结果给出输出目录或文件名

Python 在完整文件路径中搜索用户关键字,并根据搜索结果给出输出目录或文件名,python,Python,我有完整的文件路径和用户搜索关键字,如果用户输入是在basefilename打印完整文件名 如果搜索的关键字是文件夹部分,则打印路径,直到找到该搜索路径为止 例如: filepath='D:\ABDCD\Desktop\old.net\bestchspring\Vs.net\CommanUsegftrol.ascx.cs' 如果用户搜索台: 输出应为D:\ABDCD\Desktop 如果用户搜索命令: 输出应为:D:\abdd\Desktop\old.net\bestchspring\Vs.ne

我有完整的文件路径和用户搜索关键字,如果用户输入是在basefilename打印完整文件名

如果搜索的关键字是文件夹部分,则打印路径,直到找到该搜索路径为止

例如: filepath='D:\ABDCD\Desktop\old.net\bestchspring\Vs.net\CommanUsegftrol.ascx.cs'

如果用户搜索台: 输出应为D:\ABDCD\Desktop

如果用户搜索命令: 输出应为:D:\abdd\Desktop\old.net\bestchspring\Vs.net\CommanUsegftrol.ascx.cs

import os
searchtext='cs'
filepath='D:\ABDCD\Desktop\old.net\BestchPring\Vs.net\CommanUsegftrol.ascx.cs'
fle=filepath.lower()
searcheddata=fle.find(searchtext.lower())
if searchtext in os.path.basename(filepath):
    print("File: ",filepath)
elif(searcheddata!=-1):
    lastdir=fle[searcheddata:].find('\\')
    print("Folder: ",filepath[:searcheddata+lastdir])
else:
    print("File And Folder Both Not Found")

如果我理解你的问题是正确的,下面的代码就是你需要的

def filter_by_keyword(directory, pattern):
    root = ...
    if os.path.dirname(directory):
        for path, subdir, files in os.walk(root):
            for fn in fnmatch.filter(files, pattern):
                print('Matched variant found in "{}", fn: "{}"'.format(path, fn))

我不知道我是否理解,但我想这就是你想要的:

filepath='D:\ABDCD\Desktop\old.net\BestchPring\Vs.net\CommanUsegftrol.ascx.cs'

def findpath(searchtext):
    path = os.path.normpath(filepath)
    while path != "":
        path, folder = os.path.split(path)
        if searchtext.lower() in folder.lower():
            return os.path.join(path, folder)
    return "Not found"
结果:

In [1]: findpath("des")
Out[1]: 'D:\ABDCD\Desktop'

In [2]: findpath("comman")
Out[2]: 'D:\ABDCD\Desktop\old.net\BestchPring\Vs.net\CommanUsegftrol.ascx.cs'

到底是什么问题?读取用户输入?算法?不客气。如果它对您有帮助,您可以接受它作为正确答案,这样它也可以帮助其他人吗?但是当文件或文件夹未搜索时,它没有返回任何值。您所说的文件或文件夹未搜索是什么意思?findpath(“DSJHDDDJJDF”)这不会返回任何内容它为我返回:“未找到”。。。预期的行为是什么?