Найти все файлы CSV в каталоге, используя Python - PullRequest
35 голосов
/ 11 февраля 2012

Как мне найти все файлы в каталоге с расширением .csv в python?

Ответы [ 7 ]

52 голосов
/ 05 сентября 2012
import os
import glob

path = 'c:\\'
extension = 'csv'
os.chdir(path)
result = glob.glob('*.{}'.format(extension))
print(result)
29 голосов
/ 12 февраля 2012
from os import listdir

def find_csv_filenames( path_to_dir, suffix=".csv" ):
    filenames = listdir(path_to_dir)
    return [ filename for filename in filenames if filename.endswith( suffix ) ]

Функция find_csv_filenames() возвращает список имен файлов в виде строк, которые находятся в каталоге path_to_dir с заданным суффиксом (по умолчанию ".csv").

Приложение

Как напечатать имена файлов:

filenames = find_csv_filenames("my/directory")
for name in filenames:
  print name
5 голосов
/ 26 июля 2016

используйте модуль Python OS для поиска CSV-файла в каталоге.

простой пример здесь:

import os

# This is the path where you want to search
path = r'd:'

# this is the extension you want to detect
extension = '.csv'

for root, dirs_list, files_list in os.walk(path):
    for file_name in files_list:
        if os.path.splitext(file_name)[-1] == extension:
            file_name_path = os.path.join(root, file_name)
            print file_name
            print file_name_path   # This is the full path of the filter file
4 голосов
/ 22 августа 2017

Мне нужно было получить csv файлов, которые были в подкаталогах, поэтому, используя ответ от tchlpr , я изменил его, чтобы он работал лучше всего для моего варианта использования:

import os
import glob

os.chdir( '/path/to/main/dir' )
result = glob.glob( '*/**.csv' )
print( result )
1 голос
/ 18 января 2019

В этом решении используется фильтр функций python.Эта функция создает список элементов, для которых функция возвращает true.В этом случае используемая анонимная функция является частичным совпадением «.csv» для каждого элемента списка файлов каталога, полученного с помощью os.listdir («путь, который я хочу найти»)

import os

filepath= 'filepath_to_my_CSVs'  # for example: './my_data/'

list(filter(lambda x: '.csv' in x, os.listdir('filepath_to_my_CSVs')))
1 голос
/ 22 ноября 2018
import os

path = 'C:/Users/Shashank/Desktop/'
os.chdir(path)

for p,n,f in os.walk(os.getcwd()):
    for a in f:
        a = str(a)
        if a.endswith('.csv'):
            print(a)
            print(p)

Это поможет идентифицировать путь и этих CSV-файлов

0 голосов
/ 07 октября 2018

Хотя решение, данное thclpr, работает, оно сканирует только непосредственные файлы в каталоге, а не файлы в подкаталогах, если таковые имеются. Хотя это не является обязательным требованием, но на тот случай, если кто-то захочет сканировать подкаталоги, приведенные ниже, это код, который использует os.walk

import os
from glob import glob
PATH = "/home/someuser/projects/someproject"
EXT = "*.csv"
all_csv_files = [file
                 for path, subdir, files in os.walk(PATH)
                 for file in glob(os.path.join(path, EXT))]
print(all_csv_files)

Скопировано из этого блога.

...