2012-02-10 73 views

回答

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

find_csv_filenames()返回的文件名字符串,驻留在目录path_to_dir具有给定后缀(默认情况下,名为“.csv”)的列表的功能。

附录

如何打印文件名:

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

我有一个问题,即时消息与我在做什么这个代码即时通讯试图显示目录usin中的所有内容g,csv = csv.reader(open(filenames,'rb')),它给我一个错误“强制unicode:需要字符串或缓冲区”,你可以帮我一下,谢谢你,如果我可以补充它。 – mintgreen 2012-02-14 17:15:27

39
import os 
import glob 

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

这是一个简短的解决方案,但请注意,这只能扫描当前目录(脚本运行的地方)。改变使用'os.chdir(“/ mydir”)',如下所示:http://stackoverflow.com/questions/3964681/find-all-files-in-directory-with-extension-txt-in- python – ppasler 2016-12-02 13:00:30

+2

@ppasler嗨,回答编辑与您的消化。另外我觉得现在它更pythonic :) – 2016-12-02 15:06:37

4

使用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 
0

我不得不csv文件是在子目录,因此,使用响应从tchlpr我修改了它的工作最适合我的使用情况:

import os 
import glob 

os.chdir('/path/to/main/dir') 
result = glob.glob('*/**.csv') 
print(result) 
相关问题