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)
。
我正在尝试创建一个简单的搜索引擎来查看文件内部。为了重用代码,我分离了搜索功能,但由于某些原因,它第二次就不起作用了。
第一次它显示了它应该的结果,但第二次我输入一个名字它根本没有给我任何结果。它就像 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)
。