2016-04-27 2 views
0

У меня есть код, который необходимо перебирать по всем файлам по заданному пути. Однако я заметил некоторые странные ошибки, и, оказывается, мой код ищет не только файлы по заданному пути, но и все файлы в папках, которые расположены по тому же пути.Python: поиск файлов по заданному пути, но не файлов в каталогах по заданному пути

например path = /home/Documents/place_to_check

At path: 
    file1.txt 
    file2.txt 
    file3.txt 
    folder_containing_other_files 

Я просто хочу, чтобы цикл через 3 файлов и игнорировать любые файлы, расположенные в папке folder_containing_other_files.

Мой код в настоящее время выглядит следующим образом:

for root, dirs, files in os.walk(path): 
     for file in files: 
      #Search for file 
      if file == "specific_file_I_want.json": 
       print "FOUND FILE" 

Я попытался удалить dirs из первой строки, но он выдает ошибку:

ValueError: too many values to unpack 

Любой совет будет здорово!

ответ

1

UPDATE: При использовании os.listdir:

import os 
all_files = [i for i in os.listdir(path) if os.path.isfile(os.path.join(path, i))] 

#Search for file 
if "specific_file_I_want.json" in all_files: 
    print "FOUND FILE" 

При использовании os.walk:

all_files = [ files for root, _, files in os.walk(path) if os.path.abspath(root) == os.path.abspath(path) ][0] 
if "specific_file_I_want.json" in all_files: 
    print "FOUND FILE" 
2

Если вам не нужно искать в подкаталоги, вы можете использовать

for item in os.listdir(path): 
    if os.path.isfile(item): 
    print item