我有一个目录,其中有一堆子目录,每个子目录都有许多csv文件,但我只对某些csv文件感兴趣。所以我写了下面的python方法,但我无法捕获文件名,如果我执行*.csv,它将找到所有文件,但我不希望所有文件都被读取:
def gatherStats(template_file, csv_file):
for lang in getLanguageCodes(csv_file):
lang_dir = os.path.join(template_file, lang)
try:
for file in os.listdir(lang_dir):
if fnmatch.fnmatch(file, '*-*-template-users-data.csv'):
t_file = open(file, 'rb').read()
reader = csv.reader()
for row in reader:
print row
else:
print "didn't find the file"
except Exception, e:
logging.exception(e)我在这里做错了什么?这是一个正则表达式问题吗?我们可以在fnmath中使用正则表达式吗?
发布于 2013-03-15 04:14:56
在另一个用户的帮助下,我设法解决了这个问题。我把这个答案放在这里,以供将来社区参考。
def gatherStats(template_file, csv_file):
for lang in getLanguageCodes(csv_file):
lang_dir = os.path.join(template_file, lang)
try:
for filename in os.listdir(lang_dir):
path = os.path.join(lang_dir, filename)
if re.search(r'-.+-template-users-data.csv$',filename):
with open(path, 'rb') as template_user_data_file:
reader = csv.reader(template_user_data_file)
try:
for row in reader:
print row
except csv.ERROR as e:
logging.error(e)
else:
print "didn't find the file"
except Exception, e:
logging.exception(e)发布于 2013-03-15 01:50:12
你的代码有几个问题。先解决它们,然后我们可能会弄清楚你的问题到底是什么。
file。而是在打开文件之前将其替换为filename.os.path.join(lang_dir, filename)。含义:t_file = open(os.path.join(lang_dir,filename),'rb').read()
reader = csv.reader()读取您的文件?
try/except块对我来说太宽了。慢慢来,缩小实际可能发生的错误的范围。然后决定你想忽略其中的哪一个,以及哪一个会使你的程序崩溃。仔细看看这个代码块中实际抛出的异常。你可能会在那里找到你的问题。https://stackoverflow.com/questions/15416401
复制相似问题