2014-02-11 209 views
2

我可以读取所有csv文件像这样的Python:只读CSV文件,蟒蛇

import glob 
for files in glob.glob("*.csv"): 
    print files 

不过,我只想读那些刚刚.csv为后缀的文件。例如 我只会想读

file.csv,而不是

file.x.csv 

file.x.y.csv 

什么是做到这一点的好办法?

+1

用于glob.glob(“*。csv”)文件的变量名'files':'是误导性的,因为'files'指单个文件名... – YXD

回答

5

你可以使用count

import glob 
for files in glob.glob("*.csv"): 
    # print all files that contain only .csv 
    if files.count('.') == 1: 
     print files 
+1

Duhhhhhhh !! .... – Ank

+0

很高兴我能帮到你。 – jramirez

1

添加保护像

if '.' not in os.path.basename(files)[:-4] 
0

您可以使用在每个字符串的结尾匹配的.csv一个正则表达式,文件名是一个字符串变量最后的.csv。

import re 

if re.search('\.csv', filename): 
    do something 
0

使用filter()和正则表达式。

import glob 
import re 

flt = re.compile(r'^[^.]+\.csv$',re.I) 
for f in filter(flt.match,glob.glob('*.csv')): 
    print(f) 

这里的正则表达式假定文件名中只有一个句点。您的需求可能需要不同的正则表达式。