2012-02-10 17 views

risposta

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 funzione find_csv_filenames() restituisce un elenco di nomi di file come stringhe, che si trovano nella directory path_to_dir con il suffisso data (per impostazione predefinita, ".csv").

Addendum

Come stampare i nomi dei file:

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

ho un problema con quello che sto facendo con questo codice sta cercando di visualizzare tutti i contenuti nella directory usin g, csv = csv.reader (aperto (nome file, 'rb')) e il suo dandomi un errore "coercizione ad unicode: bisogno di una stringa o di un buffer" puoi aiutarmi qui per favore grazie mille se puoi lo apprezzo . – 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

Questa è una soluzione breve, ma si noti che questo esegue solo la scansione nella directory corrente (in cui è in esecuzione lo script). Per cambiare usare 'os.chdir ("/mydir ")', come fornito qui: http://stackoverflow.com/questions/3964681/find-all-files-in-directory-with-extension-txt-in- python – ppasler

+2

@ppasler Ciao, Rispondi modificato con il tuo suggerimento. Inoltre penso che ora sia più pitonico :) –

4

uso Python modulo OS trovare il file CSV in una directory.

il semplice esempio è qui:

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

ho dovuto ottenere csv file che erano nelle sottodirectory, quindi, utilizzando la risposta da tchlpr ho modificato per funzionare al meglio per il mio caso d'uso:

import os 
import glob 

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