遍历文件目录并查找相应的文件问题
import osdef search(root, target): #传入两个变量
items = os.listdir(root)#把root目录下的所有目录及文件存入一个列表
for item in items:#遍历该目录下所有的文件及文件夹
path = os.path.join(root, item)#把传入的路径及其下面的文件名合成一个路径
if os.path.isdir(path):#判断合成的路径是否为一个目录如果是则打印[-]路径然后再次调用该函数
print('[目录]', path)
search(path, target)
elif path.split('/')[-1] == target:#如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称
print('[++++++++++++++++++++++++++++++++++++++++++]', path)
else:
print('[文件]', path)
找不到需要target的文件。。。。不知道是哪里出现了问题。。。。求助大神。 你没有切换当前工作区
def search(root, target): #传入两个变量
os.chdir(root)
items = os.listdir(root)#把root目录下的所有目录及文件存入一个列表
for item in items:#遍历该目录下所有的文件及文件夹
path = os.path.join(root, item)#把传入的路径及其下面的文件名合成一个路径
if os.path.isdir(path):#判断合成的路径是否为一个目录如果是则打印[-]路径然后再次调用该函数
print('[目录]', path)
search(path, target)
s.chdir(os.pardir)
elif path.split('/')[-1] == target:#如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称
print('[++++++++++++++++++++++++++++++++++++++++++]', path)
else:
print('[文件]', path) 大马强 发表于 2021-8-17 07:47
你没有切换当前工作区
您测试过么?首先您的s变量写错了。这个逻辑好像也不对,假如我找的是一个文件目录的话好像也是会有问题的。 os.path.join() 返回的结果路径是 D:\\ a\\b\\c 这种类型的反斜杠路径,你用split 拆分 / 斜杠,肯定找不到文件
你把第 9 行改成这样就找到了
elif path.split('\\')[-1] == target:#如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称 假面的假面 发表于 2021-8-18 00:15
您测试过么?首先您的s变量写错了。这个逻辑好像也不对,假如我找的是一个文件目录的话好像也是会有问题的 ...
打扰了,粗心了 本帖最后由 大马强 于 2021-8-18 08:20 编辑
假面的假面 发表于 2021-8-18 00:15
您测试过么?首先您的s变量写错了。这个逻辑好像也不对,假如我找的是一个文件目录的话好像也是会有问题的 ...
我觉得其实可以不用join的
https://static01.imgkr.com/temp/5e7e6246320246c4b6a0f61069dc410d.jpg
def search(root, target):# 传入两个变量
os.chdir(root)# 切换成当前工作区
items = os.listdir(root)# 把root目录下的所有目录及文件存入一个列表
for item in items:# 遍历该目录下所有的文件及文件夹
path = os.path.join(root, item)# 把传入的路径及其下面的文件名合成一个路径
# print(path)
if os.path.isdir(path):# 判断合成的路径是否为一个目录如果是则打印[-]路径然后再次调用该函数
print('[目录]', path)
search(path, target)
os.chdir(os.pardir)# 切换回上层工作区
# 如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称
elif path.split('/')[-1] == target:
print('[++++++++++++++++++++++++++++++++++++++++++]', path)
else:
print('[文件]', path) def search(root, target):# 传入两个变量
os.chdir(root)
# 把root目录下的所有目录及文件存入一个列表
for item in os.listdir(os.curdir):# 遍历该目录下所有的文件及文件夹
# path = os.path.join(root, item)# 把传入的路径及其下面的文件名合成一个路径
# print(path)
if os.path.isdir(item):
# 判断合成的路径是否为一个目录如果是则打印[-]路径然后再次调用该函数
print('[目录]', item)
search(item, target)
os.chdir(os.pardir)
# 如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称
elif item.split('/')[-1] == target:
print('[++++++++++++++++++++++++++++++++++++++++++]', item)
else:
print('[文件]', item) 大马强 发表于 2021-8-18 08:08
我觉得其实可以不用join的
无论是文件还是文件夹还是无法找到我需要找的内容,目前只是把所有的文件,文件夹罗列出来是不是函数迭代调用上有问题。 假面的假面 发表于 2021-8-18 11:27
无论是文件还是文件夹还是无法找到我需要找的内容,目前只是把所有的文件,文件夹罗列出来是不是函数迭代 ...
这样算是找到了吗?
https://static01.imgkr.com/temp/79cbe9e568184b05aa9504154f75c5a4.jpg 大马强 发表于 2021-8-18 11:53
这样算是找到了吗?
找是找到了。不过您把我的显示目录文件名给切掉了。我之所以那么变成是想要显示绝对路径。{:5_106:} 啊这{:10_266:} 假面的假面 发表于 2021-8-18 13:59
找是找到了。不过您把我的显示目录文件名给切掉了。我之所以那么变成是想要显示绝对路径。
那就用这个
def search(root, target):# 传入两个变量
os.chdir(root)
# 把root目录下的所有目录及文件存入一个列表
for item in os.listdir(os.curdir):# 遍历该目录下所有的文件及文件夹
path = os.path.join(os.getcwd(), item)# 把传入的路径及其下面的文件名合成一个路径
# print(path)
if os.path.isdir(item):
# 判断合成的路径是否为一个目录如果是则打印[-]路径然后再次调用该函数
print('[目录]', path)
search(item, target)
os.chdir(os.pardir)
# 如果path不是一个目录,则判断该文件名是否等于传入的变量target,如果等于则打印[+]路径名称,否则打印[!]路径名称
elif item.split('/')[-1] == target:
print('[++++++++++++++++++++++++++++++++++++++++++]', path)
else:
print('[文件]', path) 大马强 发表于 2021-8-18 14:46
那就用这个
看你这一遍一遍的怪累的。。。。你这程序没跑一遍测试吧?因为有函数迭代的关系join永远连接的是当前目录和上一级目录,所以还是存在问题的。os.path.abspath()函数了解一下。非常感谢您的耐心解答。 假面的假面 发表于 2021-8-18 15:00
看你这一遍一遍的怪累的。。。。你这程序没跑一遍测试吧?因为有函数迭代的关系join永远连接的是当前目录 ...
啊这
https://static01.imgkr.com/temp/6e27183626ca4c6abb8ecbd59d6384ff.jpg
这还不满足你的要求?{:10_266:}
原来还有这个函数 os.path.abspath(){:10_297:} 大马强 发表于 2021-8-18 15:11
啊这
这还不满足你的要求?
{:5_96:}我错了。满足了满足了。是我没读懂path = os.path.join(os.getcwd(), item) 的意思。。。。抱歉抱歉 假面的假面 发表于 2021-8-18 17:13
我错了。满足了满足了。是我没读懂path = os.path.join(os.getcwd(), item) 的意思。。。。抱歉 ...
233,没事没事,刚好get一个新函数
页:
[1]