30讲第2题
def fun (path, file_name):import os
for each in os.listdir(path):
if os.path.isfile(each):
if str(file_name) == str(each):
print(os.path.join(os.getcwd(), each))
else:
next_path = os.path.join(os.getcwd(), each)
fun(next_path, file_name)
path = input('请输入待查找的初始目录:')
file_name = input('请输入需要查找的目标文件:')
fun(path, file_name)
运行显示溢出,但自己检查了几遍没问题啊
结束判断是判断文件是否为文件夹
你只单纯的更改了路径,但是工作路径不会随着你变量值更改而更改,导致你 os.getcwd() 函数返回的总是最初始的工作目录,需要通过 os.chird 来进行更改
参考代码,用 os.chird 函数:
import os
def fun(path, file_name):
os.chdir(path)
for each in os.listdir(path):
if os.path.isfile(each):
if str(file_name) == str(each):
print(os.path.join(os.getcwd(), each))
else:
next_path = os.path.join(os.getcwd(), each)
fun(next_path, file_name)
os.chdir(os.pardir)
path = input('请输入待查找的初始目录:')
file_name = input('请输入需要查找的目标文件:')
fun(path, file_name)
或者不使用 os.getcwd() 函数,手动输入完整路径:
import os
def fun(path, file_name):
for each in os.listdir(path):
if os.path.isfile(each):
if str(file_name) == str(each):
print(os.path.join(path, each))
else:
next_path = os.path.join(path, each)
fun(next_path, file_name)
path = input('请输入待查找的初始目录:')
file_name = input('请输入需要查找的目标文件:')
fun(path, file_name)
Twilight6 发表于 2021-5-11 13:24
你只单纯的更改了路径,但是工作路径不会随着你变量值更改而更改,导致你 os.getcwd() 函数返回的总是 ...
你的第二个方法好像不行,
在if os.path.isfile()后面括号里应该输入each的绝对路径
def fun (path, file_name):
import os
for each in os.listdir(path):
each_path = os.path.join(path, each)
if os.path.isfile(each_path):
if str(file_name) == str(each):
print(each_path)
else:
next_path = each_path
fun(next_path, file_name)
path = input('请输入待查找的初始目录:')
file_name = input('请输入需要查找的目标文件:')
fun(path, file_name)
sxhqyxc 发表于 2021-5-11 14:19
你的第二个方法好像不行,
在if os.path.isfile()后面括号里应该输入each的绝对路径
我执行并没有问题,而且建议 improt 导入建议放在代码头部,递归过程也反复 import Twilight6 发表于 2021-5-11 15:32
我执行并没有问题,而且建议 improt 导入建议放在代码头部,递归过程也反复 import
好的谢谢大佬解答
页:
[1]