如何解决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 举报,一经查实,本站将立刻删除。