2012-02-10 40 views

Respuesta

19
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) ] 

La función find_csv_filenames() devuelve una lista de nombres de archivo como cadenas, que residen en el directorio path_to_dir con el sufijo dado (por defecto, ".csv").

Adición

Cómo imprimir los nombres de archivo:

filenames = find_csv_filenames("my/directory") 
for name in filenames: 
    print name 
+0

Tengo un problema con lo que estoy haciendo con este código estoy tratando de mostrar todo el contenido en el directorio usin g, csv = csv.reader (open (nombres de archivo, 'rb')) y me da un error "coercing a unicode: need string or buffer" me puedes ayudar aquí, por favor muchas gracias, si puedes lo apreciaré . – mintgreen

39
import os 
import glob 

path = 'c:\\' 
extension = 'csv' 
os.chdir(path) 
result = [i for i in glob.glob('*.{}'.format(extension))] 
print(result) 
+0

Esta es una solución corta, pero tenga en cuenta que esta solo escanea en el directorio actual (donde se ejecuta su secuencia de comandos). Para cambiar ese uso, use 'os.chdir ("/mydir ")', como se indica aquí: http://stackoverflow.com/questions/3964681/find-all-files-in-directory-with-extension-txt-in- python – ppasler

+2

@ppasler Hola, respuesta editada con sugestiones. También creo que ahora es más pitónico :) –

4

uso de Python OS módulo para encontrar el archivo csv en un directorio.

el ejemplo simple es aquí:

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 
0

que tenía que conseguir csv archivos que estaban en subdirectorios, por lo tanto, el uso de la respuesta de tchlpr he modificado para que funcione mejor para mi caso de uso:

import os 
import glob 

os.chdir('/path/to/main/dir') 
result = glob.glob('*/**.csv') 
print(result) 
Cuestiones relacionadas