2012-02-10 49 views

Trả lời

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

Chức năng find_csv_filenames() trả về một danh sách các tên tập tin như dây đàn, mà nằm trong thư mục path_to_dir với hậu tố nhất định (theo mặc định, ".csv").

Phụ Lục

Làm thế nào để in tên tập tin:

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

Tôi đang gặp vấn đề với những gì tôi đang làm mã này im cố gắng hiển thị tất cả nội dung trong thư mục thứ trong usin g, csv = csv.reader (mở (tên tập tin, 'rb')) và nó cho tôi một lỗi "co giật để unicode: cần chuỗi hoặc bộ đệm" bạn có thể giúp tôi ra ở đây xin cảm ơn rất nhiều nếu bạn có thể tôi sẽ apreciate nó . – 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

Đây là một giải pháp ngắn, nhưng lưu ý rằng điều này chỉ quét trong thư mục hiện tại (nơi tập lệnh của bạn đang chạy). Để thay đổi sử dụng đó 'os.chdir ("/mydir ")', như được cung cấp ở đây: http://stackoverflow.com/questions/3964681/find-all-files-in-directory-with-extension-txt-in- python – ppasler

+2

@ppasler Xin chào, Trả lời đã chỉnh sửa với sugestion của bạn. Ngoài ra tôi nghĩ bây giờ nó nhiều hơn pythonic :) –

4

sử dụng Python OS module để tìm tập tin csv trong một thư mục.

các ví dụ đơn giản là ở đây:

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

tôi đã phải nhận csv tập tin đã được trong các thư mục con, do đó, bằng cách sử dụng phản hồi từ tchlpr tôi sửa đổi nó để làm việc tốt nhất cho trường hợp sử dụng của tôi:

import os 
import glob 

os.chdir('/path/to/main/dir') 
result = glob.glob('*/**.csv') 
print(result) 
Các vấn đề liên quan