【发布时间】:2018-07-10 12:31:44
【问题描述】:
我想编写一些代码来检查一个目录(及其子目录)是否与给定的字符串匹配,让字符串为New。然后我想打印从根到包含此字符串New 的特定目录的路径。但是,我的代码只正确打印第一级的目录,例如C:\\New Folder,如果里面有一个与字符串匹配的子目录,例如C:\\New Folder\\New Folder,它只会打印为C:\\New Folder。更多详细信息,请查看我的代码片段:
import os
rootDir = 'C:\\New Folder'
os.chdir(rootDir)
for root, subdirs, files in os.walk(rootDir):
for dirs in subdirs:
splitdirs = dirs.split(" ")
prefix = "New"
if splitdirs[0] == prefix:
newDir = os.path.join(rootDir, dirs)
print(newDir)
所以我想要打印出C:\\New Folder 和C:\\New Folder\\New Folder,而不是给我两次C:\\New Folder。谁能解释为什么会这样?我是新手,所以可能我在这里缺乏一些编程思维方式。感谢您的检查。
【问题讨论】:
-
os.chdir(rootDir)是多余的 -
目录名应该包含给定的前缀还是以它开头?
-
你可能打错了:在
os.path.join(...)中使用root而不是rootDir -
@AzatIbrakov 目录名应该只包含给定的前缀
-
@AzatIbrakov 是的,感谢您指出这一点,不知何故我没有注意到我在那里犯了一个错误