我对Python还不熟悉。手头的任务是在特定目录中的生成列表中查找最新的生成。你知道吗
我的代码如下所示:
command = 'ls ' + self.build_path
stdin, stdout, stderr = self.ssh.exec_command(command)
builds_list = stdout.read()
arrBuild = builds_list.split('\n')
joined = "|".join(arrBuild)
self.latest_packages['relayws'] = max(re.findall("mybuild-relayws_[0-9]+.[0-9].[0-9]+-[0-9]_amd64.deb", joined))
现在我的问题是,“mybuild-relayws\u 44.0.99-1\u amd64.deb”总是被认为是最新的,因为我的列表中有“mybuild-relayws\u 44.0.101-1\u amd64.deb”。你知道吗
即:
max(['mybuild-relayws_44.0.99-1_amd64.deb', 'mybuild-relayws_44.0.101-1_amd64.deb'])
总是返回mybuild-relayws_44.0.99-1_amd64.deb.
我知道max()在这里使用字符串比较,从这个意义上说,它返回的是正确的。但是,在我的例子中,我期望mybuild-relayws\u 44.0.101-1\u amd64.deb
我的问题是:
提前谢谢。你知道吗
您还没有给出任何有关如何对生成进行排序的规则。我假设您希望根据以下条件订购:
firebet-relayws_44.0.99-1_amd64.deb
=>;44.0.99-1
44.0.99-1
=>;一个数字序列(44, 0, 99, 1)
然后尝试以下方法:
例如:
现在我们把它作为键函数传递给
max
您需要从
relayws
获取版本:然后您可以通过键找到最大值:
相关问题 更多 >
编程相关推荐