pretty22 发表于 2020-12-31 22:22:43

哎 我又来了 就是这个代码可以运行 但是还是会出错

import os

x = input("请输入要搜索的初始文件路径:")
y = input("请输入要搜索的文件名:")

def main(x , y):
    os.chdir(x)

    for i in os.listdir(os.chdir):
      if os.path.isdir(i):
            main(i , y)
            os.chdir(os.pardir)
      if i == y:
            print(os.getcwd() + i)


main(x , y)



Traceback (most recent call last):
File "C:/Users/pp980/Desktop/文件搜索.py", line 18, in <module>
    main(x , y)
File "C:/Users/pp980/Desktop/文件搜索.py", line 9, in main
    for i in os.listdir(os.chdir):
TypeError: listdir: path should be string, bytes, os.PathLike or None, not builtin_function_or_method

{:10_266:}
这是咋回事啊

Daniel_Zhang 发表于 2020-12-31 22:57:03

本帖最后由 Daniel_Zhang 于 2020-12-31 23:02 编辑

据我所知,os.chdir() 是不会返回的

for i in os.listdir(os.chdir): 改成for i in os.listdir(x):

你的 x 就是文件的路径

另外其实不需要这么麻烦,os下面有一个 walk 方法
os.walk(path) 直接搜索路径,包含子路径,返回一个带有路径下所有文件的 list
将 os.walk(path) 赋值给一个 变量,随取随用

jackz007 发表于 2020-12-31 23:31:24

      这一句
for i in os.listdir(os.chdir):
      改为
for i in os.listdir(os . getcwd()):

逃兵 发表于 2021-1-1 08:39:25


import os

x = input("请输入要搜索的初始文件路径:")
y = input("请输入要搜索的文件名:")

def main(x , y):
    os.chdir(x)

    for i in os.listdir():
      if os.path.isdir(i):
            main(i , y)
            os.chdir(os.pardir)
      if i == y:
            print(os.getcwd() +'\\'+ i)


main(x , y)

pretty22 发表于 2021-1-1 13:59:20

Daniel_Zhang 发表于 2020-12-31 22:57
据我所知,os.chdir() 是不会返回的

for i in os.listdir(os.chdir): 改成for i in os.listdir(x):


大佬我改了一下 但是运行之后吧出现了 拒绝访问的 错误提示 这是因为啥呀

Daniel_Zhang 发表于 2021-1-1 15:43:31

本帖最后由 Daniel_Zhang 于 2021-1-1 15:58 编辑

pretty22 发表于 2021-1-1 13:59
大佬我改了一下 但是运行之后吧出现了 拒绝访问的 错误提示 这是因为啥呀

emmmmmmmmm,不应该啊,你之前的代码不都可以访问路径吗?
你print一下看看你chdir的路径是不是正确的
用 print(os.getcwd()) 在 chdir 之后

能放一下你更改后的代码和错误提示上来吗?



还有一种不太可能的情况,你这个是在 macOS 下面的 win 虚拟机里面打的,没有给完全的磁盘访问权限吗?我之前有遇到过,但是感觉也不应该啊。


pretty22 发表于 2021-1-1 19:34:50

Daniel_Zhang 发表于 2021-1-1 15:43
emmmmmmmmm,不应该啊,你之前的代码不都可以访问路径吗?
你print一下看看你chdir的路径是不是正确的 ...

大佬 您看 我怕我自己代码 有问题 我就改的跟鱼老师一样的代码 但是还是有错误   然后我查了这个问题 但是还是没有效果依旧是这个错误

请输入要搜索的初始文件路径:C:\Users
请输入要搜索的文件名:Running.fbx
Traceback (most recent call last):
File "C:\Users\pp980\Desktop\文件搜索.py", line 17, in <module>
    main(x , y)
File "C:\Users\pp980\Desktop\文件搜索.py", line 11, in main
    main(i , y)
File "C:\Users\pp980\Desktop\文件搜索.py", line 11, in main
    main(i , y)
File "C:\Users\pp980\Desktop\文件搜索.py", line 9, in main
    for i in os.listdir(os.curdir):
PermissionError: 拒绝访问。: '.'

还请大佬 给点提示{:10_266:}

Daniel_Zhang 发表于 2021-1-1 23:37:12

本帖最后由 Daniel_Zhang 于 2021-1-1 23:48 编辑

你试试看楼上大佬说的, for i in os.listdir(os.getcwd()) 但是我觉得肯定不是这个问题

要不你试试用管理员身份运行?IDLE

你试试百度一下 ’   PermissionError: 拒绝访问。: '.'    ‘ 这个,百度上面挺多的啊,感觉你到这一步了,已经不是代码的问题了吧...

或者在 cmd 里面 用 sudo 指令运行,管理员模式

还有一个无关紧要的东西,你 15 行 print(os.getcwd() + i) 中间要加一个斜杠,因为路径末尾没有斜杠,filename开头也没有,不加斜杠就会两个黏在一起

真的,我啥也没改,你的代码是没有问题的,证据如下:



import os

x = input("请输入要搜索的初始文件路径:")
y = input("请输入要搜索的文件名:")

def main(x , y):
    os.chdir(x)

    for i in os.listdir(os.curdir):
      if os.path.isdir(i):
            main(i , y)
            os.chdir(os.pardir)
      if i == y:
            print(os.getcwd() + '/' + i)


main(x , y)

要是还不行,再然后就不知道了。真的,一滴都没有了{:10_266:}

pretty22 发表于 2021-1-2 13:02:00

Daniel_Zhang 发表于 2021-1-1 23:37
你试试看楼上大佬说的, for i in os.listdir(os.getcwd()) 但是我觉得肯定不是这个问题

要不你试试用管 ...

唉网上那些 也没用
感谢大佬为我解答 这么多{:10_266:}
页: [1]
查看完整版本: 哎 我又来了 就是这个代码可以运行 但是还是会出错