微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python - os.walk在文件资源管理器中搜索文件对我不起作用

如何解决Python - os.walk在文件资源管理器中搜索文件对我不起作用

什么问题

当我尝试运行一个可以在我的 C 驱动器中查找文件的 python 脚本时,它返回一个错误。我尝试了 python 2.7 和 3.8(我需要 python 2.7,所以我想可能我的 python 太旧了,但我尝试了最新版本,但仍然失败)

主要目标是什么

我正在尝试学习如何在 python 中创建一个函数或脚本来返回一个带有目录路径文件。最终目标是创建一个搜索功能查找文件(特定的 mp4 类型文件),然后使用 os.system 或任何其他模块播放该文件。我首先这样做,所以我可以学习如何随着时间的推移创建我正在寻找的东西。我希望先了解这个概念。

我尝试了什么

我尝试查找几个不同的 YouTube 视频,但很难,因为我找到的内容通常比我要查找的内容更复杂。以下是我看过的视频:

https://www.youtube.com/watch?v=y_BGU-2ZL-Q - 这很完美,但代码对我不起作用。 (见下文)

https://www.youtube.com/watch?v=IWDC9vcBIFQ - 这很好,但我认为我不需要索引或创建 gui。所以我停止了观看,因为我不确定如何将其应用于基本脚本。

我使用的代码是什么:

    def find(name):
        count=0
        for root,dirs,files in os.walk('C:\'):
            if name in files:
                print(root,name)
                count+=1
        print("We found "+ count+" results")
        print("Finish")
        input()
    
    try:
        s=input("name: ")
        find(s)
    except:
        print("Error")

错误图片(我第一次忘记在帖子中添加):

解决方法

@lukover 和@barny 已经给出了正确答案

或者,在这种情况下,只需取消反斜杠并替换为正斜杠(“/”)。正斜杠适用于 windows 和 linux,因为我猜,它在内部规范了 windows 上的路径。但是,如果您有更长的路径,则可以考虑使用 os.path.join( ),然后使用 os.walk( ) 从外部将其包裹起来。

简而言之,在这种特殊情况下,您也可以尝试以下方法。此外,打印语句中存在错误,您使用 + 运算符连接字符串和整数。不允许。

import os
def find(name):
    count=0
    for root,dirs,files in os.walk('C:/'):
        for file in files:
            if name in file:
                print(root,name)
                count+=1
    print("We found "+ str(count)+" results")
    print("Finish")
    input()

try:
    s=input("name: ")
    find(s)
except Exception as e:
    print(e)
    print("Error")
,

for root,files in os.walk('C:\'): 更改为 for root,files in os.walk('C:\\'):

注意双反斜杠。

通过放置\,您将转义下一个符号,因此字符串永远不会结束。您甚至可以在问题的突出显示中看到这一点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。