2013-08-01 6 views
0

Im new на Python, Im на самом деле на коротком курсе на этой неделе, но у меня есть очень специфический запрос, и я не знаю, как с этим бороться прямо сейчас: у меня есть много разных 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) 
+5

Исправить ваши отступы. Вы знаете, это очень важно в Python! –

+0

Во-первых, я думаю, вы должны быть более ясными. Во-вторых, вы должны использовать методы из модуля os, такие как walk, listdir и т. Д. –

+0

Прямой ответ на ваш вопрос заключается в том, что вы печатаете только список имен файлов, которые проходят конкретный тест, имея какое-то отношение к длине от имени файла, отличного от длины следующего имени файла в списке. Мне очень сложно понять * намерение * кода. Какой результат вы ожидали? Весь список файлов? Если да, то почему проверки на длину имени файла? – nephtes

ответ

0

Если вы правильно поняли, что хотите получить все файлы?

Попробуйте в этом случае:

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) 
1

Может быть, вы можете использовать библиотеку Глоб: http://docs.python.org/2/library/glob.html

Это кажется, что он работает UNIX- как для листинга файлов, так что, возможно, он может работать с этим?

import glob 

directory = 'yourdirectory/' 
filelist = glob.glob(directory+'*.txt') 
Смежные вопросы