在这段代码中,我解压缩一个文件来搜索一个名为node.txt的特定文件,但是如果我有更多名为node.txt.old或node.txt.new的文件,它会显示在搜索上。
因此,简而言之,我怎样才能将loop_package.find("node.txt")
限制为仅匹配确切的文件?
import zipfile
import re
ziproot = zipfile.ZipFile('c:\\zips\somezip.zip')
node_list = []
for loop_package in ziproot.namelist():
if loop_package.find("node.txt"):
for line in ziproot.read(loop_package).split("\n"):
if line.find("doc-node") >= 0:
node_dict = dict()
for iline in ziproot.read(loop_package).split("\n"):
if iline.find("node_nsName") >= 0:
mt = re.search(r'(.*>)(.*?)(<.*)', iline, re.M | re.I)
node_dict['filePath'] = loop_package
node_dict['nodeCon'] = mt.group(2)
node_list.append(node_dict)
else:
pass
else:
pass
else:
pass
提前致谢。
答案 0 :(得分:3)
使用endswith
代替find
。
for loop_package in ziproot.namelist():
if loop_package.endswith("node.txt"):
由于loop_package是一个完整的文件路径,我们感兴趣的是这样一个字符串的结尾,即文件名。
答案 1 :(得分:0)
您正在搜索字符串列表中的字符串。 Python使这很容易!
您不想使用find()方法。您想要搜索ziproot.namelist():
if "node.txt" in ziproot.namelist():