在我当前目录中搜索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)
我可以检查以验证这一点的任何想法或进一步的步骤?
答案 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
的工作原理。