【问题标题】:not listing entire directory不列出整个目录
【发布时间】:2013-08-01 15:51:57
【问题描述】:

我是 Python 新手,这周我实际上在上一个短期课程,但我有一个非常具体的要求,我现在不知道如何处理:我在一个文件夹中有许多不同的 txt 文件,当我使用下面的代码我只收到了许多文件中的两个的文件名,这是为什么呢? 问候!

import dircache
lista = dircache.listdir('C:\FDF')
i = 0
check = len(lista[0])
temp = []
count = len(lista)
while count != 0:
if len(lista[i]) != check:
    temp.append(lista[i- 1])
    check = len(lista[i])
else:
    i = i + 1
count = count - 1
print (temp)

【问题讨论】:

  • 修正缩进。这在 Python 中很重要,你知道的!
  • 首先,我认为您应该更加明确。其次,您应该使用 os 模块中的方法,例如 walk、listdir 等
  • 对您的问题的直接回答是,您只打印通过特定测试的文件名列表,这与文件名的长度与列表中的以下文件名。我很难理解代码的意图。你期待什么输出?整个文件列表?如果是这样,为什么要检查文件名长度?
  • 请注意,dircache 已被弃用;您可能只想直接使用os.listdir()

标签: python listdir


【解决方案1】:

也许你可以使用 glob 库:http://docs.python.org/2/library/glob.html

它似乎可以像 UNIX 一样用于列出文件,所以也许它可以使用它?

import glob

directory = 'yourdirectory/'
filelist = glob.glob(directory+'*.txt')

【讨论】:

    【解决方案2】:

    如果我的理解正确,您想获取所有文件吗?

    在这种情况下试一试:

    import os
    
    filesList = None
    dir = 'C:\FDF'
    for root, dirs, files in os.walk(dir):
        filesList = files
        break
    print(filesList)
    

    如果需要完整路径使用:

    import os.path
    
    filesList = None
    dir = 'C:\FDF'
    for root, dirs, files in os.walk(dir):
        for file in files:
            filesList.append(os.path.join(root, file))
    print(filesList)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-08
      • 1970-01-01
      • 2023-03-03
      • 2020-10-09
      • 2014-08-24
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多