Python:搜索确切的文件名

时间:2013-09-03 18:46:09

标签: python text io

在我当前目录中搜索HTML时,如果名称包含任何子字符串,则它将假定该文件存在并继续操作而不是说该文件不存在。假设我有一个文件“protocolHTTP.html” - 在测试中确保“protocol.html”抛出错误,但事实并非如此。它只是继续该计划的运作。

我想确保文件名完全匹配。这就是我所拥有的:

for file in glob.glob('*.html'):
        if protocolFile in file:
                with open(file) as f:
                        contents = f.read()
        else:
                print "Could not locate '" + protocolFile + ".html'"
                sys.exit(1)

我可以检查以验证这一点的任何想法或进一步的步骤?

2 个答案:

答案 0 :(得分:1)

我认为您的代码与以下内容完全相同:

if os.path.isfile(filename):
    with open(filename) as f:
        contents = f.read()
else:
    print 'Could not locate {0}'.format(filename)
    sys.exit(1)

答案 1 :(得分:1)

in不是等式检查,它是集合成员资格检查。查看here并向下滚动到有关in讨论的项目符号列表之后。

>>> 'foo' in 'foobar'
True
>>> 'foo' in 'foo'
True
>>> 'foo' in 'bar'
False

在搜索一个文件时循环并不是一个好主意,但是如果你已经完成了以下操作,那么它就可以了。

if '{}.html'.format(protocolFile) == os.path.basename(file):

所以,总的来说,采用Viktor的方法。但请确保您也了解in的工作原理。