Python 排序应用程序版本号

Python 排序应用程序版本号,python,Python,我是初学者。我想写一个脚本来清理Google Chrome应用程序文件夹中的旧版本,我想知道如何高效地“排序”应用程序版本号。最好的方法是什么 下面是我的“春季大扫除”脚本: 或者,如何改进此脚本?任何建议都会有帮助,因为我在Python中真的毫无用处。我对这个问题的回答直接转换成Python: 您可以使用此比较算法对列表进行排序。我的直觉是,我对虚线字符串值的稳定排序,从最低有效到最高,将其视为int值,比多次运行“Comparator”函数作为典型“collections”排序的辅助方法更

我是初学者。我想写一个脚本来清理Google Chrome应用程序文件夹中的旧版本,我想知道如何高效地“排序”应用程序版本号。最好的方法是什么

下面是我的“春季大扫除”脚本:


或者,如何改进此脚本?任何建议都会有帮助,因为我在Python中真的毫无用处。

我对这个问题的回答直接转换成Python:


您可以使用此比较算法对列表进行排序。

我的直觉是,我对虚线字符串值的稳定排序,从最低有效到最高,将其视为int值,比多次运行“Comparator”函数作为典型“collections”排序的辅助方法更有效?(例如,某些类型的快速排序、其他类型的合并排序等)如果您知道数字中有多少节,则可以将它们转换为可比较的值。但除非你做了数千次,否则这根本不会有多大影响。计算机是用来计算事物的!我是一个只有高中学历的初学者。我把计算机科学作为一种爱好来练习,我永远也找不到这方面的工作。既然是为了好玩,我想学着把它做好。我真的不喜欢“把东西扔到电脑上计算”的想法,如果我能锻炼我的大脑并在那里找到解决方案,或者向这里的其他用户学习,仅仅因为电脑可以做浪费性的计算。。“快”:)我完全理解。每个人都有这种感觉。我所建议的是一种正确的方法。有很多正确的方法可以做到这一点。在你花多长时间做这件事和电脑花多长时间做这件事之间,总有一个权衡(即使你是为了好玩而做的)。两个小时的时间来节省两微秒的计算时间是值得考虑的。编程技能还包括做出这样的决策!比较适合CPU寄存器的两个整数将花费最少的O(1)时间。其他一切都需要一系列操作,可能是递归的,也可能是复杂的。例如,对字符串列表进行排序需要进行大量的字符串比较,每个字符串的比较可以是O(N)。
import os
import sys
import re
import operator
import shutil


GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY=r'C:\Documents and Settings\Administrator\Local Settings\Application Data\Google\Chrome\Application'

REGEX_GOOGLE_CHROME_APPLICATION_VERSION = '^(\d+)\.(\d+)\.(\d+)\.(\d+)$'


def sorted_by_version_number(versions_list):
  version_elements = len(versions_list[0])
  for index in range(version_elements-1, 0, -1):
    key = operator.itemgetter(index)
    versions_list.sort(key=key, reverse = True)
  return versions_list


def delete_old_google_chrome_versions():
  REGEX = re.compile(REGEX_GOOGLE_CHROME_APPLICATION_VERSION)
  application_versions = []
  for filename in os.listdir(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY):
    filepath = os.path.join(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY,
                            filename)
    if os.path.isdir(filepath):
      match = REGEX.match(filename)
      if match:
        version = (v1, v2, v3, v4) = [int(match.group(i)) for i in range(1, 5)]
        application_versions.append(version)
  versions_to_delete = sorted_by_version_number(application_versions)[1:]
  for application_version in versions_to_delete:
    directory_name = '.'.join([str(v) for v in application_version])
    directory_path = os.path.join(GOOGLE_CHROME_APPLICATION_VERSIONS_DIRECTORY,
                                  directory_name)
    print('Deleting Google Chrome application directory: {}...'.format(
      directory_path))
    # shutil.rmtree(directory_path)


def main():
  delete_old_google_chrome_versions()


if __name__ == '__main__':
  main()