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

时间:2018-03-13 14:38:01

标签: python python-3.x function workflow

我正在尝试创建一个简单的搜索引擎来查看文件。为了重用代码,我将搜索功能分开,但由于某种原因,它只是第二次无效。

第一次它显示结果,但第二次我输入一个名字,它根本没有给我任何结果。就像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()

1 个答案:

答案 0 :(得分:1)

这种解决办法似乎解决了这个问题:

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)