首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python fnmatch无法找到文件

python fnmatch无法找到文件
EN

Stack Overflow用户
提问于 2013-03-15 01:39:26
回答 2查看 368关注 0票数 0

我有一个目录,其中有一堆子目录,每个子目录都有许多csv文件,但我只对某些csv文件感兴趣。所以我写了下面的python方法,但我无法捕获文件名,如果我执行*.csv,它将找到所有文件,但我不希望所有文件都被读取:

代码语言:javascript
复制
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中使用正则表达式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-15 04:14:56

在另一个用户的帮助下,我设法解决了这个问题。我把这个答案放在这里,以供将来社区参考。

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2013-03-15 01:50:12

你的代码有几个问题。先解决它们,然后我们可能会弄清楚你的问题到底是什么。

  • 首先,不要使用内置名称作为变量,比如file。而是在打开文件之前将其替换为filename.
  • Then os.path.join(lang_dir, filename)。含义:

t_file = open(os.path.join(lang_dir,filename),'rb').read()

  • How如果您不在该行中引用打开的文件对象,您是否期望reader = csv.reader()读取您的文件?

  • 您的try/except块对我来说太宽了。慢慢来,缩小实际可能发生的错误的范围。然后决定你想忽略其中的哪一个,以及哪一个会使你的程序崩溃。仔细看看这个代码块中实际抛出的异常。你可能会在那里找到你的问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15416401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档