Python 函数内部函数但不起作用

Python function inside function but doesn't work

我正在尝试创建一个简单的搜索引擎来查看文件内部。为了重用代码,我分离了搜索功能,但由于某些原因,它第二次就不起作用了。

第一次它显示了它应该的结果,但第二次我输入一个名字它根本没有给我任何结果。它就像 c 变量不会第二次进入 searchpart(c, path) 函数。

import os


def searchpart(c, path): 
    employees = os.walk(path)
    for root, dirs, files in employees:
        names = os.path.basename(root)
        if c.lower() in names.lower():
            print(root)
            os.chdir(root)
            for i in os.listdir():
                print("----->  {}".format(i))


def welcomepart(path):
    # this function allows to reuse the application after a name is search.
    c = input("\n-------> please introduce the name? \n")
    searchpart(c, path)


def mainfuntion():
    path = 'WORKERS'
    invalid_input = True
    print('______________ Welcome  ______________  \n ')

    while invalid_input:
        welcomepart(path)


mainfuntion()

这个 work-around 似乎解决了问题:

def searchpart(c, path): 
    cwd = os.getcwd()
    employees = os.walk(path)
    for root, dirs, files in employees:
        names = os.path.basename(root)
        if c.lower() in names.lower():
            print(root)
            os.chdir(root)
            for i in os.listdir():
                print("----->  {}".format(i))
    os.chdir(cwd)

它只记住函数调用之前您所在的目录,并在返回之前改回原来的目录。

但是,我相信会有一个解决方案,不需要行:os.chdir(root)