在python中读取没有扩展名的文本文件的问题

时间:2011-02-07 11:06:00

标签: python file

我写了一段代码,它应该读取位于目录中的几个文件中的文本。这些文件基本上是文本文件,但它们没有任何扩展名。但我的代码无法读取它们:

corpus_path = 'Reviews/'

for infile in glob.glob(os.path.join(corpus_path,'*.*')):
    review_file = open(infile,'r').read()
    print review_file

为了测试这段代码是否有效,我放了一个虚拟文本文件dummy.txt。这是有效的,因为它有扩展。但我不知道应该做什么,所以没有扩展名的文件可以被阅读。 有人能帮我吗?感谢

4 个答案:

答案 0 :(得分:6)

Glob模式与Windows平台上的通配符的工作方式不同。只需使用*代替*.*即可。即os.path.join(corpus_path,'*')。请注意,*将匹配目录中的每个文件 - 如果这不是您想要的,那么您可以相应地修改模式。

有关详细信息,请参阅glob module documentation

答案 1 :(得分:5)

只需使用*代替*.*

后者要求存在扩展名(更确切地说,文件名中需要有一个点),前者不需要。

答案 2 :(得分:3)

您可以搜索*而不是*.*,但这会匹配目录中的每个文件。

从根本上说,这意味着您必须处理正在打开的文件不是文本文件的情况。

答案 3 :(得分:0)

似乎你需要

from os import listdir

from filename in ( fn for fn in listdir(corpus_path) if '.' not in fn):
    # do something
你可以写

from os import listdir

for fn in listdir(corpus_path):
    if '.' not in fn:
        # do something

但前者使用生成器备用一个缩进级别