【问题标题】:Use os.listdir to show directories only [duplicate]使用 os.listdir 仅显示目录 [重复]
【发布时间】:2018-02-02 21:17:07
【问题描述】:

如何通过os.listdir 将python 带到仅输出目录,同时通过raw_input 指定要列出的目录?

我有什么:

file_to_search = raw_input("which file to search?\n>")

dirlist=[]

for filename in os.listdir(file_to_search):
    if os.path.isdir(filename) == True:
        dirlist.append(filename)

print dirlist

现在,如果我输入(通过raw_input)当前工作目录,这实际上可以工作。但是,如果我输入其他任何内容,列表将返回空。我试图分而治之,但每个代码片段都按预期工作。

【问题讨论】:

  • 您能分享一下您在raw_input 字段中输入的内容以及您使用的操作系统吗?
  • 仅作记录,因为 Jean-Francois 解决方案有效:我输入的示例:C:/, D:/X/Y, C:\, D:\X\Y, D:\ \X\\Y 操作系统:Windows

标签: python raw-input os.path


【解决方案1】:

这是意料之中的,因为os.listdir 只返回文件/目录的名称,所以找不到对象,除非您在当前目录中运行它。

您必须 join 扫描目录以计算其工作的完整路径:

for filename in os.listdir(file_to_search):
    if os.path.isdir(os.path.join(file_to_search,filename)):
        dirlist.append(filename)

注意列表理解版本:

dirlist = [filename for filename in os.listdir(file_to_search) if os.path.isdir(os.path.join(file_to_search,filename))]

【讨论】:

猜你喜欢
  • 2022-11-04
  • 2020-04-03
  • 2011-05-15
  • 2019-10-03
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2012-08-03
相关资源
最近更新 更多