我写了一段代码,它应该读取位于目录中的几个文件中的文本。这些文件基本上是文本文件,但它们没有任何扩展名。但我的代码无法读取它们:
corpus_path = 'Reviews/'
for infile in glob.glob(os.path.join(corpus_path,'*.*')):
review_file = open(infile,'r').read()
print review_file
为了测试这段代码是否有效,我放了一个虚拟文本文件dummy.txt。这是有效的,因为它有扩展。但我不知道应该做什么,所以没有扩展名的文件可以被阅读。 有人能帮我吗?感谢
答案 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
但前者使用生成器备用一个缩进级别